【发布时间】:2014-03-17 10:25:56
【问题描述】:
我有一系列ng-repeated ul/li 集,我想让一组li 在单击ul 级别的链接时可见。
我的代码基于此处找到的答案:https://stackoverflow.com/a/12431211,这表明模型突变是执行此操作的正确方法。
过滤器似乎比预期的更热心,我最终一无所获。
我怎样才能实现这个功能?
div ng-controller="DeviceController">
<ul ng-repeat="category in devices">
<a ng-click="setCategory(category)">{{category.name}}</a>
<li ng-repeat="device in selected.devices | filter: isSelected(category)">
<a href="device?id={{device.ID}}">{{device.name}}</a>
</li>
</ul>
</div>
function DeviceController($scope) {
$scope.devices = [
{name: 'Desktop',
devices: [{id:1, name:'Olivia'},
{id:2, name:'Cayenne'}]
},
{name: 'Laptop',
devices: [{id:3, name:'Probook'},
{id:4, name:'Asus G750'}]
},
{name: 'Tablet',
devices: [{id:5, name:'Transformer Prime'},
{id:4, name:'Galaxy Note 10.1'}]
}
];
$scope.setCategory = function(category) {
$scope.selected = category
}
$scope.isSelected = function(category) {
return $scope.selected === category;
}
}
小提琴在这里:http://jsfiddle.net/3rV6w/6/
我无法弄清楚为什么 isSelected() 函数作为活动类的条件(在引用的答案中)可以很好地工作,但作为过滤器的性能却不一样。范围也许?各种 console.log 建议它应该可以工作,但是..
【问题讨论】:
标签: angularjs-ng-repeat angularjs-filter