如何判断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时,表格会自动提交,因为无论如何,数据库中只能有一个数据集。
答案 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过滤器中剩下一个名字时,表单会自动提交。