私は自分でこれを理解することはできません。多分私は何かが足りない。コントローラーと、独自のスコープを作成するディレクティブがあります。
プランカーのリンク : 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);
});
}
};
});
なぜ私はこれを得るのですか?
双方向バインディングが機能する場合、未定義ではなく、変数の実際の値が表示されるはずです。変数を更新しても時計が更新されないのはなぜですか? これは非常に紛らわしいです。