[英]Angular filter and ng-click not working
我有一个菜单列出一组列表:
<ul>
<li ng-repeat="group in getData">
<a ng-click="groupId = group.id">{{group.id}}</a>
</li>
</ul>
单击该项目,应更新groupId
但显然不是。
我还创建了一个从groupId
获取值的过滤器:
Data.query(function(data) {
$scope.getData = data;
$scope.currentGroup = $filter('filter')(data, {id: $scope.groupId});
$log.debug($scope.groupId);
$log.debug($scope.currentGroup);
}, function(reason) {
$log.error(reason)
});
那应该过滤以下列表以仅显示具有所选groupId
项目:
<tr ng-repeat="list in currentGroup.lists">
<td>{{list.name}}</td>
</tr>
但是,它也不起作用。 我可以在控制台中记录正确的数组,但是表未显示任何数据。
请看看这个柱塞 。
在您的Plunker中,您可以像这样使用它
<table>
<tr ng-repeat="group in currentGroup">
<td ng-repeat="list in group.lists">{{list.name}}</td>
</tr>
</table>
因为currentGroup也是一个数组
您的代码有多个问题。 这里是2:
ng-repeat
创建自己的子范围,因此当您执行ng-click="groupId = group.id"
,您要分配子范围的groupId
,您应该设置父范围:
<a ng-click="$parent.groupId = group.id">{{group.id}}</a>
但这看起来不太好; 尝试使用as
语法 ,或从函数中分配它。
$filter
返回一个数组,因此您必须选择第一个元素以正确分配currentGroup
:
$scope.currentGroup = $filter('filter')(data, {id: $scope.groupId})[0];
这是修复了这两个问题的工具:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.