我们正在迁移到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
答案 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不起作用