如何判断Ng-Repeat是否打印了x项

时间:2014-12-06 02:45:09

标签: javascript angularjs ng-repeat

如何判断ng-repeat是否显示1个项目?比如,if ng-repeat items === 1: do something.

<div ng-controller="mycontroller2">
<form ng-submit="submit()">
   {% csrf_token %}
   Search by name:
   <input ng-model="artistname" />
   <input type="submit" value="submit" />
</form>
<table>
   <tr ng-repeat="name in names | filter:artistname | limitTo:10">
       <!-- if number of "name" === 1 I want the form submitted -->
       <td ng-hide="!artistname">
           <a href="" ng-click="submit()">
           {({ name })}
           </a>
       </td>
   </tr>
</table>

此代码读取用户的输入以显示提交表单的链接列表。我想要的是当ng-repeat显示的艺术家名字的初始列表为1时,表格会自动提交,因为无论如何,数据库中只能有一个数据集。

5 个答案:

答案 0 :(得分:1)

您可以像这样检查名称数组的长度:

<span ng-if="names.length === 1">Do something</span>

只需将ng-if添加到具有ng-repeat的同一元素中,然后它将是有条件的。

更新

您可以使用$watch

收听控制器中的逻辑
$scope.$watch('names', function() {
  if (names.length === 1) {
    // Do something
  }
}

答案 1 :(得分:1)

在表单块中添加以下内容:

<div ng-if="names.length == 1">
    <script type="text/javascript">
    $("#myform").submit(); 
    </script>
</div>

答案 2 :(得分:1)

提供的答案risto是沿着右边的线,只需要调整以确定在过滤器被应用之后是否只有一个值

<form ng-submit="submit()">
    {% csrf_token %}
    Search by name:
    <input ng-model="artistname" />
    <input type="submit" value="submit" 
           ng-disabled="(names | filter:artistname).length === 1" />
 </form>

过滤会更改显示的元素数量,但会更改names数组的长度。

答案 3 :(得分:0)

这需要在控制器中发生。

if ($scope.names.length === 1) $scope.submit()

答案 4 :(得分:0)

我必须结合几个答案才能得到我想要的东西。当有一个名字时,下面带有ng-if和ng-init函数的<div>元素会提交表单。

<form ng-submit="submit()">
    {% csrf_token %}
    Search by name:
    <input ng-model="artistname" />
    <input type="submit" value="submit" />

    <div ng-if="(names | filter:artistname).length===1" ng-init="submit()"></div>
</form>

<table>
   <tr ng-repeat="name in names | filter:artistname | limitTo:10">
       <td ng-hide="!artistname">
           <a href="" ng-click="submit()">
           {({ name })}
           </a>
       </td>
   </tr>
</table>

现在,当ng-repeat过滤器中剩下一个名字时,表单会自动提交。