2

我们目前正在迁移到 Angular 1.3,同时测试 bindOnce 功能我遇到了这个问题:确切的一段代码......

控制器代码:

this.value = 'value';
this.clickTest = function () {
    this.value = 'changed';
};

HTML:

//cm is the ControllerAs variable defined in the route
 <p> {{ ::cm.value}} </p>
 <button ng-click="cm.clickTest()"> CLICK </button>

...在一个控制器中工作正常,但在另一个控制器中没有 - 在工作控制器中,点击事件不会改变值,而在非工作控制器中它会改变值 - (两者的代码完全相同控制器,路由更改,显然其他一些东西也发生了变化)。为了有一个更好的测试环境,两个控制器都被清空了。

现在我想知道的是:有什么东西可以阻止 bindOnce 功能按预期工作吗?尽管视图中使用了正确的语法 (::),但是否有强制角度代码不删除观察者或再次启用它的东西?

我正在使用 Angular 1.3.2

4

2 回答 2

3

我认为点击后值没有改变,上下文的 bcozthis被改变为clickTest函数

试试下面的代码,希望它有效

var vm = this;
vm.value = 'value';
vm.clickTest = function () {
    vm.value = 'changed';
};
return vm;

而对于bindOnce,我认为在控制器中改变值后,我认为不可能再次绑定,并且为了测试代码,我们不应该担心视图。

于 2014-11-19T13:18:05.657 回答
1

启用 Batarang 扩展时,AngularJS 1.3 的绑定一次不起作用

于 2014-12-29T14:27:03.973 回答