AngularJS如何编码对控制器的ngClick调用?

时间:2014-08-11 05:10:00

标签: angularjs angularjs-ng-click

以下是一个简短示例: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属性和所有)。

1 个答案:

答案 0 :(得分:2)

  

当我检查按钮并将ng-click功能更改为doSomethingElse()时,为什么它仍然继续增加?

你应该查看汇编&amp;链接Angular中的进程。原因很简单,角度在创建后会覆盖这些元素,而不是每次单击它们。由于在创建元素时通过角度进行扫描和解析,因此手动手动更改它不会改变任何内容,因为角度不会检查在那里写入的内容。

更多信息:https://docs.angularjs.org/guide/compiler