我们可以延迟angularjs中的渲染,直到所有变量都从回调

时间:2018-06-13 10:47:51

标签: angularjs callback rendering ng-init

更新

1- IsShopToShowTerminated 返回true,这是预期的但值不会在视图中反映出来。

我已经共享了angularjs代码。 IsShopToShowTerminated始终未定义,并且未描述所需的值。

我认为问题是因为,它首先呈现,然后IsShopToShowTerminated的值发生变化。 搜索后,我越来越困惑。

$scope.IsShopToShowTerminated = function(shopTerminationDate) {
  setTimeout(function() {
      debugger;
      if ($scope.IsTerminated($scope.viewCompany.TerminationDate)) {
        return true;
      } else {
        return $scope.IsTerminated(shopTerminationDate);
      }
    },
    0);
}
<td ng-init="isTerminatedValue = IsShopToShowTerminated(shop.TerminatinonDate)">
  {{isTerminatedValue}}
  <div ng-show="isTerminatedValue">
    <i class="fa fa-circle text-danger"></i>
    <small>Terminated</small>
  </div>

  <div ng-show="isTerminatedValue">
    <i class="fa fa-circle text-success"></i>
    <small>Active</small>
  </div>
</td>

1 个答案:

答案 0 :(得分:0)

您可以通过添加一个ngIf指令来延迟渲染,该指令会检查isTerminatedValue的值是否为undefined。

<td ng-init="isTerminatedValue = IsShopToShowTerminated(shop.TerminatinonDate)">
    <div ng-if="isTerminatedValue">
        {{isTerminatedValue}}
        <div ng-show="isTerminatedValue">
            <i class="fa fa-circle text-danger"></i>
            <small>Terminated</small>
        </div>
        <div ng-show="isTerminatedValue">
            <i class="fa fa-circle text-success"></i>
            <small>Active</small>
        </div>
    </div>  
</td>