Angularjs 为什么我的$watch没有被叫?
我只是不明白为什么我的$watch在更新后的值为“entity”的情况下被第二次调用 指令('myParent',函数(){ 返回{ 控制器:函数($scope,$log){ $scope.$on('thingChanged',函数(e,newVal){ $log.log('thingChanged事件命中…'); $scope.$apply(函数(){ $scope.thing=newVal; }); }); }, 模板:“” }; }) .directive('myChild',函数($parse,$log){ 返回{ 控制器:功能($scope){ }, 范围:{ 实体:'=', v:“@” }, 链接:函数(范围、元素、属性){ $log.log('v in link:'); $log.log(范围五); 属性$观察('v',功能(v){ $log.log('v in observe in link:'); $log.log(v); }) $log.log('链接中的实体:'); $log.log(scope.entity); 范围.$watch(范围、实体、功能(nv、ov){ $log.log(“$watch检测到更改:”); $log.log(scope.entity); }); }, 模板:“{v}}-{{entity}” }; }) .directive('myChild2',函数($parse,$log,$timeout){ 返回{ 控制器:功能($scope){ var计数=0; $timeout(函数(){ $scope.$emit('thingChanged',{awesome:'cool'+count++}); }, 2000); }, 范围:正确, 链接:函数(范围、元素、属性){ },Angularjs 为什么我的$watch没有被叫?,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我只是不明白为什么我的$watch在更新后的值为“entity”的情况下被第二次调用 指令('myParent',函数(){ 返回{ 控制器:函数($scope,$log){ $scope.$on('thingChanged',函数(e,newVal){ $log.log('thingChanged事件命中…'); $scope.$apply(函数(){ $scope.thing=newVal; }); }); }, 模板:“” }; }) .directive('myChild',函数($pa
模板:“Watch应该是要监视的属性的名称,请尝试使用
scope.$Watch(“实体”…
,如果要深入监视(即对象属性),请使用true
作为最后一个参数调用它
scope.$watch("entity", function() { ... }, true);
我是唯一一个在app.js第9行出现错误的人吗?你可以在“实体”上观看或者scope.entity。这里不需要true,因为他替换了entity,而不是entity的属性。“entity”起作用,但scope.entity不起作用。我可以发誓,我看到了一些字符串没有传递给$watch的示例…我很困惑。感谢关于true参数的提示。要使scope.entity起作用,需要像这样传递它:scope.$watch(function(){return scope.entity},scope.$watch(scope.someFunction,…)是scope的缩写。$watch(function(){return scope.someFunction()},…)
scope.$watch("entity", function() { ... }, true);