У меня возникли проблемы с разработкой того, как я могу определить настраиваемую директиву, которая:
- Использует область выделения и
- Использует директиву ng-model в новой области внутри своего шаблона.
Вот пример:
HTML:
<body ng-app="app">
<div ng-controller="ctrl">
<dir model="foo.bar"></dir>
Outside directive: {{foo.bar}}
</div>
</body>
JS:
var app = angular.module('app',[])
.controller('ctrl', function($scope){
$scope.foo = { bar: 'baz' };
})
.directive('dir', function(){
return {
restrict: 'E',
scope: {
model: '='
},
template: '<div ng-if="true"><input type="text" ng-model="model" /><br/></div>'
}
});
Требуемое поведение здесь заключается в том, что входное значение привязано к свойству внешней области foo.bar
, через свойство директивы (изолировать) scope model
. Этого не происходит, потому что директива ng-if в шаблоне, охватывающем div, создает новую область видимости, поэтому она обновляет область model
, а не область действия директивы.
Обычно вы решаете эти проблемы с ng-моделью, убедившись, что в выражении есть точка, но я не вижу никакого способа сделать это здесь. Я задавался вопросом, могу ли я использовать что-то вроде этого для моей директивы:
{
restrict: 'E',
scope: {
model: {
value: '=model'
}
},
template: '<div ng-if="true"><input type="text" ng-model="model.value" /><br/></div>'
}
но это не работает...