在AngularJS中没有找到关于页面加载的数据

时间:2016-06-06 11:46:42

标签: angularjs

我正在显示一些数据,因此在页面加载时,"找不到数据"控制正在运行,我应该怎么做才能防止这种情况发生? 这是我的代码

 <ul id="owl-example" class="list-unstyled topContributors">
                    <li ng-show="TopContributors.length==0">
                        <p><span style="color: red; font-weight: bold;">No Contributors....</span></p>
                    </li>
                    <li ng-repeat="contributors in TopContributors">
                        <img ng-src="{{contributors.AccountName}}" />

                        <div class="contName">
                            <p>{{contributors.UserName}}</p>
                        </div>

                    </li>
                </ul>

5 个答案:

答案 0 :(得分:1)

您可以添加一个标记以隐藏“No Contributors ....”,直到请求未完成

<li ng-show="TopContributors.length==0 && flag">
  <p><span style="color: red; font-weight: bold;">No Contributors....</span></p>
</li>

答案 1 :(得分:1)

我认为以下代码足以实现您想要的而不是添加标志:

<li ng-show="TopContributors && TopContributors.length==0">

答案 2 :(得分:0)

在你的控制器中(用es6编写,但你得到漂移):

export default class MyController extends Base {
  constructor() {
    super(arguments);
    this.loading = true;
    this.loadData();
  }

  loadData() {
    // Assumes data loaded correctly;
    someCodeLoadingData();

    this.loading = false;
  }
}

在你的模板中:

<li ng-show="TopContributors.length === 0 && vm.loading === false">
  <p>No Contributors....</p>
</li>

将样式放在样式表中,保持模板清洁。 vm(至少在我的情况下)来自我们的基地,其中vm = this;

答案 3 :(得分:0)

如果数据不是来自使用AJAX调用的API,则可以使用ng-cloak来实现此目的。基本上它会在对该div或元素执行任何函数之前等待变量加载 将ng-cloak添加到ng-show语句中,如下所示:

<ul id="owl-example" class="list-unstyled topContributors">
    <li ng-show="TopContributors.length==0" ng-cloak>
        <p><span style="color: red; font-weight: bold;">No Contributors....</span></p>
    </li>
    <li ng-repeat="contributors in TopContributors">
        <img ng-src="{{contributors.AccountName}}" />

        <div class="contName">
            <p>{{contributors.UserName}}</p>
        </div>

    </li>
</ul>

在你的css文件中写:

[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
 display: none !important;
}

如果它正在使用AJAX呼叫,您可以在呼叫进行过程中设置一个标志,并在您取得成功时更新它。

答案 4 :(得分:0)

此处的通常建议是建议为加载状态添加变量。我不认为你甚至需要那个。

除了添加ng-cloak以避免模板加载闪烁之外,我建议您将TopContributors变量默认为负值,这样可以确保在等待加载它时不显示div (从后端服务我假设)。例如:

function topContributorsController(...) {
    $scope.TopContributors = -1; // 'not loaded' state

以下是添加ng-cloak的模板更改:

<ul id="owl-example" class="list-unstyled topContributors" ng-cloak>