AngularJS:当data.length为零时如何避免这种行为?

时间:2015-01-21 15:57:56

标签: angularjs

当一个名为lineItemsF.length的数组为零时,我有一个警告显示给用户。我正在处理一个单页应用程序,所以一旦用户登录该数组将为零,几秒后数据将加载,以便该数组将有一些项目,因此,警报将消失。

该警报实际上是我在过滤器中使用的东西,在这种情况下,在搜索框中,当用户在该搜索框中键入内容并且过滤器未返回任何内容时,警报就会出现。

我制作了一个视频供您了解发生了什么,只需查看屏幕顶部的红色横幅,该横幅会在数据加载后自动删除。这不是我想要的,我想要的是在用户在搜索框中输入不正确的内容时看到警报。

我虽然使用$pristine$dirty会有效,但我不知道我是否错误地使用了这些。

here is the video my friends

 <!--this is the alert-->
<div  class="alert"
      ng-show="!lineItemsF.length">Did not match any search criteria
</div>
<!--this is the alert-->

    <div ng-repeat="lineItem in lineItemsF = (lineItems | filter:search)">

      <div class="panel">
        <div class="panel-heading">
          <h3 class="panel-title">{{:: lineLeague[0].leagueName}}</h3>
        </div>
        <div class="panel-body">
          <table class="table table-bordered tables">
            <thead class="tableHeader">
            <tr>
              ...
            </tr>
            </thead>

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

只需将其置于警报条件

即可
<div  class="alert"
      ng-show="searchCriteria.length > 0 && !lineItemsF.length">Did not match any search criteria
</div>

searchCriteria是搜索输入中的值,因此仅当条件不为空(或长度> 0)时才会显示。

答案 1 :(得分:0)

在div中使用ng-cloak    要么   ng-show="lineItemsF.length!=0"