Angular BindOnce,什么可以阻止它工作?

时间:2014-11-18 16:26:09

标签: javascript angularjs bindonce

我们正在迁移到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>

...在控制器中工作正常但在另一个控制器中没有 - 在工作控制器中,click事件将更改值,而在非工作控制器中它将更改值 - (两个控制器中的代码完全相同,路由更改,显然其他内容也发生了变化)。两个控制器都被清空,以便拥有更好的测试环境。

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

我正在使用Angular 1.3.2

2 个答案:

答案 0 :(得分:3)

我认为this功能

后,clickTest上下文的点击,bcoz值未发生变化

尝试以下代码,希望它有效

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

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

答案 1 :(得分:1)

当启用Batarang扩展时,AngularJS 1.3的bind-once不起作用