Возможно ли двухстороннее связывание переменных между вложенными областями изолирования?
Рассмотрим вложенные директивы ниже. Я пытался связать переменные между изолированными областями вложенных директив и не смог добиться двустороннего связывания.
В примере я хочу outerPower
привязать к innerPower
и изменить, когда innerPower
приращение числа.
Проверьте скрипку http://jsfiddle.net/hally9k/sqea6Ln7/
testApp.directive('innerDirective', function () {
return {
scope: {
innerPower: '&'
},
template: '<div><p>Inner Power = {{innerPower}}</p>' +
'<button ng-click="increment();">Power up!</button>' +
'</div>',
controller: function ($scope, $element, $attrs) {
$scope.increment = function() {
++$scope.innerPower;
}
}
};
});
testApp.directive('outerDirective', function () {
return {
scope: {
},
template: '<div><p>Outer Power = {{outerPower}}</p>' +
'<div inner-directive inner-power="outerPower"></div>' +
'</div>',
controller: function ($scope, $element, $attrs) {
$scope.outerPower = 0;
}
};
});
2 ответа
Решение
Для двунаправленного связывания необходимо использовать =
для переменной области. &
следует использовать только тогда, когда вашей директиве необходимо выполнить функцию в родительской области видимости.
scope: {
innerPower: '='
},
Просто измените одну строку
scope: {
innerPower: '=' //instead of &
}