Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 为什么我的$watch没有被叫?_Angularjs_Angularjs Directive_Angularjs Scope - Fatal编程技术网

Angularjs 为什么我的$watch没有被叫?

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在更新后的值为“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); }, 范围:正确, 链接:函数(范围、元素、属性){ },
模板:“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);