Я не могу понять это самостоятельно. Может быть, я что-то упускаю. У меня есть контроллер и директива, которая создает свою собственную область.
Ссылка на планкер: http://run.plnkr.co/plunks/wFV7d2blZKEXUgHIOxYo/
Вот код контроллера, который просто создает 3 переменные и предоставляет функцию «изменения» для каждой из них:
var myApp = angular.module("myApp",[]);
myApp.controller('MainController', function ( $scope, $rootScope ) {
$rootScope.showStuff = true;
$scope.showStuff2 = true;
$scope.showStuffObj = { stuff : true };
$scope.changeStuff = function () {
$rootScope.showStuff = false;
}
$scope.changeStuff2 = function () {
$scope.showStuff2 = false;
}
$scope.changeStuff3 = function () {
$scope.showStuffObj.stuff = false;
}
});
Далее идет директива:
myApp.directive("mydirective", function () {
return {
scope : {
showStuff : "=",
showStuff2 : "=",
showStuffObj : '='
},
restrict : "EA",
template : "<h2>Running</h2>",
link : function ( $scope ) {
console.log("running directive", $scope);
$scope.$watch("showStuff", function () {
console.log($scope.showStuff);
});
$scope.$watch("showStuff2", function () {
console.log($scope.showStuff2);
});
$scope.$watch("showStuffObj", function () {
console.log($scope.showStuffObj);
});
}
};
});
Почему я получаю это?
Если двусторонняя привязка работает, я должен видеть реальные значения переменных, а не undefined. Почему часы не обновляются, когда я обновляю переменные? Это очень сбивает с толку.