HTML:
<div ng-app="myApp" ng-controller="Controller">
<test ng-if="toggle" props="condition"></test>
</div>
Javascript:
var myApp = angular.module('myApp', []);
myApp.controller('Controller', ['$scope', '$timeout', function($scope, $timeout) {
$scope.condition = [true];
$scope.toggle = $scope.condition[0];
$scope.$watch('condition', (newv, oldv, scope) => {
console.log('old: ' + oldv);
console.log('new: ' + newv);
console.log('toggle: ' + scope.toggle);
}, true);
}]);
myApp.directive("test", function() {
return {
template: '<div>directive show</div>',
replace: true,
scope: {
props: "="
},
controller: ['$scope', '$timeout', function($scope, $timeout) {
$scope.props[0] = false;
}]
}
});
Поведение таково, что после изменения condition[0]
директивой на false, я вижу новое значение в журнале консоли,но toggle
не обновляется.
Мой вопрос :Почему toggle
не обновляется при изменении condition[0]
? Почему цикл дайджеста также не обновляет toggle
? Или цикл дайджеста вообще обновляет toggle
при изменении назначенного ему значения?
И я НЕ прошу решения этой проблемы, но причина этой проблемы.
Спасибо!