我一个人想不出来这个。也许我错过了一些东西。我有一个控制器和一个创建自己的范围的指令。
Plunker 链接: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);
});
}
};
});
为什么我会得到这个?
如果双向绑定有效,我应该看到变量的真实值,而不是未定义的。为什么我更新变量时手表不更新?这非常令人困惑。