以下是一个简短示例:http://plnkr.co/edit/x1sSw8?p=preview。
这是HTML文件:
<body ng-controller="MainCtrl as main">
<p>Hello {{main.name}}!
My current value for <code>main.value</code> is {{main.value}}.</p>
<button ng-click="main.doSomething()">Click Me</button>
</body>
以下是app.js
文件:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function() {
this.name = 'World';
this.value = 0;
this.doSomething = function(){
this.value += 5;
}
this.doSomethingElse = function(){
this.value -= 5;
}
});
当我点击按钮时,我通常希望计数器以5为增量上升。当我检查按钮并将ng-click
功能更改为doSomethingElse()
时,为什么它仍然继续增加?
我理解我没有直接更改事件监听器,所以我想知道AngularJS如何保护控制器免受外部篡改(如我所描述的示例)。我的猜测是它在第一次解析DOM之后构建了事件监听器(读取ng-click
属性和所有)。
答案 0 :(得分:2)
当我检查按钮并将ng-click功能更改为doSomethingElse()时,为什么它仍然继续增加?
你应该查看汇编&amp;链接Angular中的进程。原因很简单,角度在创建后会覆盖这些元素,而不是每次单击它们。由于在创建元素时通过角度进行扫描和解析,因此手动手动更改它不会改变任何内容,因为角度不会检查在那里写入的内容。