Ng-show值更改后未更新

时间:2019-04-07 15:56:51

标签: angularjs laravel-blade

JS

$scope.getDiffs = function () {
    return Module.getDiffs($scope.item.account_id, $scope.item.year)
      .then(function (res) {
        angular.forEach(res, function (v) {
            angular.forEach($scope.months, function (m) {
                if (m.month == v.month) {
                    m.diff = v.diff != 0;
                }
            });
        });
    });
};

刀片

<ul class="nav nav-tabs mbtm-10">
    <li role="presentation" ng-repeat="m in months"
        ng-class="{active: item.month == m.month}">
        <a href="" ng-click="item.month = m.month;fetchTrx()">
            @{{m.text}}
          <i ng-show="m.diff != null" class="fa fa-circle"
             ng-class="{'text-success': !m.diff, 'text-danger': m.diff}">
          </i>
        </a>
    </li>
</ul>

如果值为m.diff != null,我的代码将在水龙头界面上显示绿色圆圈。但是,如果值为m.diff == null,则不会更新。一旦点击显示绿色圆圈,那么无论值如何,它都会永远显示绿色圆圈。

1 个答案:

答案 0 :(得分:0)

使用angular.copy

$scope.getDiffs = function () {
    return Module.getDiffs($scope.item.account_id, $scope.item.year)
      .then(function (res) {
        angular.forEach(res, function (v) {
            angular.forEach($scope.months, function (m,i,arr) {
                if (m.month == v.month) {
                    m.diff = v.diff != 0;
                    arr[i] = angular.copy(m);
                }
            });
        });
    });
};