angularjs ng-repeat SELECT ALL

时间:2018-06-18 15:32:59

标签: angularjs angularjs-ng-repeat

我有两列使用ng-repeat的复选框,一列名为'Calc'。另一个叫做“计算器”。最后的”。

点击时,我想要一个按钮,以匹配Calc.Calc. Final的选择。

功能:

function updateCalcFinal() {
    vm.desktop.comparables.comp.forEach(e => {
        e.calcFinal = e.calc;
        console.log([e.calcFinal, e.calc]);
    });
}

HTML:

<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>
  &nbsp;&nbsp;Igualar Calc.
</button>

以上代码在console.log中绑定,但未在View中更新。任何帮助将不胜感激。

1 个答案:

答案 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()函数,我认为你正在包装不起作用的异步操作。