Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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 角度控制器和脏污检查_Angularjs_Angularjs Scope_Angularjs Controlleras - Fatal编程技术网

Angularjs 角度控制器和脏污检查

Angularjs 角度控制器和脏污检查,angularjs,angularjs-scope,angularjs-controlleras,Angularjs,Angularjs Scope,Angularjs Controlleras,在AngularJS中使用controllerAs语法时,控制器被添加到范围中 但是,当执行脏检查时,是否将其排除在外 控制器中的某些内容可能已更改,但对视图没有影响,以及 没有什么需要更新的 如果控制器未被脏检查忽略,它可能会触发不必要的更新,angular如何防止这种情况发生?“控制器中的某些内容已更改,但对视图没有影响……它可能触发不必要的更新”,这是一个矛盾。如果没有效果,则不会触发更新。控制器可以保存对服务的引用,并且服务中的某些内容可以更改,但控制器中的内容不会更改。如果控制器参与脏

在AngularJS中使用controllerAs语法时,控制器被添加到范围中

但是,当执行脏检查时,是否将其排除在外

控制器中的某些内容可能已更改,但对视图没有影响,以及 没有什么需要更新的


如果控制器未被脏检查忽略,它可能会触发不必要的更新,angular如何防止这种情况发生?

“控制器中的某些内容已更改,但对视图没有影响……它可能触发不必要的更新”,这是一个矛盾。如果没有效果,则不会触发更新。控制器可以保存对服务的引用,并且服务中的某些内容可以更改,但控制器中的内容不会更改。如果控制器参与脏检查,那么服务也会参与(因为控制器中存在引用)。脏检查由观察者完成。如果您没有创建一个观察者来检查您提到的服务,那么该服务将永远不会涉及脏检查。Angular不检查服务,因为它被控制器引用。同样:对视图没有影响意味着没有更新。这是无效的定义。@zeroflagL是对的,更新是因为监视程序触发的,当它有一个监视程序时,意味着当脏检查检测到更改时,会触发一些更新。在您的视图上,监视程序是由angularjs指令和插值(即,
{$ctrl.myProp}
自动创建的)。此外,更改与视图的效果无关,而是由代码创建的观察者进行的。如果您有一个指令,创建一个观察者来在属性更改时更改元素类,或者一个控制器来观察某个属性以注册日志,那么在发生更改时都需要更新。我想我理解。Angular在每个绑定的基础上创建观察者,对吗?即使控制器存储在作用域中,controllerAs语法也不会创建观察者?“控制器中的某些内容已更改,但对视图没有影响……它可能触发不必要的更新”,这是一个矛盾。如果没有效果,则不会触发更新。控制器可以保存对服务的引用,并且服务中的某些内容可以更改,但控制器中的内容不会更改。如果控制器参与脏检查,那么服务也会参与(因为控制器中存在引用)。脏检查由观察者完成。如果您没有创建一个观察者来检查您提到的服务,那么该服务将永远不会涉及脏检查。Angular不检查服务,因为它被控制器引用。同样:对视图没有影响意味着没有更新。这是无效的定义。@zeroflagL是对的,更新是因为监视程序触发的,当它有一个监视程序时,意味着当脏检查检测到更改时,会触发一些更新。在您的视图上,监视程序是由angularjs指令和插值(即,
{$ctrl.myProp}
自动创建的)。此外,更改与视图的效果无关,而是由代码创建的观察者进行的。如果您有一个指令,创建一个观察者来在属性更改时更改元素类,或者一个控制器来观察某个属性以注册日志,那么在发生更改时都需要更新。我想我理解。Angular在每个绑定的基础上创建观察者,对吗?即使控制器存储在作用域中,controllerAs语法也不会创建观察者?