Angular 过滤器和 ng-click 不工作
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>
但是,它也不起作用。我可以在控制台中记录正确的数组,但是 table 没有显示任何数据。
请看看这个Plunker。
在您的 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
syntax,或从函数分配它。
$filter
returns 一个数组,所以你必须 select 第一个元素才能正确分配你的 currentGroup
:
$scope.currentGroup = $filter('filter')(data, {id: $scope.groupId})[0];
这是修复了这两个问题的插件:
我有一个列出一组列表的菜单:
<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>
但是,它也不起作用。我可以在控制台中记录正确的数组,但是 table 没有显示任何数据。
请看看这个Plunker。
在您的 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
syntax,或从函数分配它。$filter
returns 一个数组,所以你必须 select 第一个元素才能正确分配你的currentGroup
:$scope.currentGroup = $filter('filter')(data, {id: $scope.groupId})[0];
这是修复了这两个问题的插件: