Ada*_*ner 15 javascript performance angularjs
假设您想要在$scope更改属性时执行某些操作.并说这个属性绑定到一个input字段.使用$watch与使用相比有哪些优点/缺点ngChange?
HTML
<input ng-model="foo" ng-change="increment()">
<p>foo: {{foo}}</p>
<!-- I want to do something when foo changes.
In this case keep track of the number of changes. -->
<p>fooChangeCount: {{fooChangeCount}}</p>
Run Code Online (Sandbox Code Playgroud)
JS
// Option 1: $watch
$scope.$watch('foo', function() {
$scope.fooChangeCount++;
});
// Option 2: ngChange
$scope.fooChangeCount = 0;
$scope.increment = function() {
$scope.fooChangeCount++;
};
Run Code Online (Sandbox Code Playgroud)
http://plnkr.co/edit/4xJWpU6AN9HIp0OSZjgm?p=preview
我知道有时您需要使用$watch(如果您要观看的值未绑定到输入字段).我理解有时你需要使用ngChange(当你想要做一些事情来响应输入的变化,但不一定是为了响应范围属性的变化).
但是,在这种情况下,两者都完成了同样的事情.
我的想法:
ngChange 看起来更干净,更容易理解正在发生的事情.$watch似乎它可能会稍微快一点,但可能可以忽略不计.有了ngChange,我认为Angular必须在编译阶段做一些额外的工作来设置事件监听器,并且可能额外的事件监听器会降低速度.无论您是否使用ngChange,摘要周期都会根据更改运行,因此您有机会收听某些内容并调用函数以响应更改.Ben*_*ant 16
底线 - 你可以用$ watch来实现你可以通过ng-change实现的每件事,但反之亦然.
用途:
ngChange - 绑定到HTML元素
$ watch - 观察范围的模型对象(包括HTML对象模型)
我的经验法则 - 如果你可以使用ng-change使用它来匹配你的场景,否则使用$ watch
为什么你不应该使用$ watch?
| 归档时间: |
|
| 查看次数: |
5324 次 |
| 最近记录: |