我们可以在 angularjs 中延迟渲染,直到所有变量都从回调中获得所需的值吗?

Can we delay rendering in angularjs until all variables get required values from callbacks

提问人:Charlie 提问时间:6/13/2018 最后编辑:Charlie 更新时间:6/13/2018 访问量:84

问:

更新

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>

angularjs 回调 渲染 ng-init

评论

0赞 Petr Averyanov 6/13/2018
最好不要使用 ng-init
0赞 Charlie 6/13/2018
@PetrAveryanov商店。TerminatinonDate对于循环中的每个商店都是不同的。你建议我写ng-show=“IsShopToShowTerminated(shop.TerminatinonDate)“在所有事件中
0赞 Petr Averyanov 6/13/2018
我建议你写ng-show=“smth.isTerminatedValue”并初始化,在每个td的控制器中更新这个值
0赞 Asif Aminur Rashid 6/13/2018
嗯,这听起来可能很傻,但您的商店变量是否在控制器中定义,例如 $scope.shop?

答:

0赞 NTP 6/13/2018 #1

您可以通过添加 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>