我有两列使用ng-repeat
的复选框,一列名为'Calc'。另一个叫做“计算器”。最后的”。
点击时,我想要一个按钮,以匹配Calc.
中Calc. Final
的选择。
function updateCalcFinal() {
vm.desktop.comparables.comp.forEach(e => {
e.calcFinal = e.calc;
console.log([e.calcFinal, e.calc]);
});
}
<button class="btn btn-sm btn-primary pull-right mt5 mb5"
ng-disabled="deskCtrl.loading"
ng-click="deskCtrl.updateCalcFinal()">
<i class="glyphicon glyphicon-ok"></i>
Igualar Calc.
</button>
以上代码在console.log
中绑定,但未在View中更新。任何帮助将不胜感激。
答案 0 :(得分:0)
我的经验是,当控制台更新而不是视图时,会出现一些导致差异的异步效果。就像数据已更新但angularjs不知道它已更新。
我建议查找$ scope。$ apply()
建议参考:When is it safe to use $scope.$apply()?
这是一个有效的Plunker,它展示了差异和实现:https://plnkr.co/edit/vdLJUg2LNIcBz5ng1kwr?p=preview
$scope.withApply = function(){
$scope.name = 'World';
console.log('button pressed')
setTimeout(function(){
console.log('$scope.name changed to async')
$scope.name = 'async'
$scope.$apply() <------ $scope.$apply()
},1000)
}
$scope.withOutApply = function(){
$scope.name = 'World';
console.log('button pressed')
setTimeout(function(){
console.log('$scope.name changed to async')
$scope.name = 'async'
},1000)
在异步回调结束时调用apply()函数,我认为你正在包装不起作用的异步操作。