我们要求用户必须从集合中选择 n 记录。 UI必须为每个 n 记录显示空占位符,直到每个记录都被填充。为了解决这个问题,我试图使用一个过滤器来填充#34;带有空占位符的所选子集。但是,过滤器导致无限的$ digest周期,我不理解为什么或如何解决它。无论如何,考虑到2个选项的要求,我的过滤器可能看起来像这样......
angular
.module('TestApp', [])
.filter('selectedFltr', function() {
return function(items) {
switch (items.length) {
case 0:
// No selections, return two empty placeholders
return [{}, {}];
case 1:
// One selection, return it plus 1 empty placeholder
return [items[0], {}];
default:
// Return all selections
return items;
}
};
});
<!-- Full collection -->
<div ng-repeat="item in ctrl.items" ng-click="item.$selected=true">
{{item.id}}
</div>
<!-- Selected subset -->
<span ng-repeat="item in ctrl.items | filter:{$selected:true} | selectedFltr">
{{item.id}}
</span>
我的例子是为了简单而设计的。例如,过滤器可能接受长度参数并动态构建结果集合。我意识到我可以将各种ng-if
或ng-show
/ ng-hide
逻辑转储到视图中来解决这个问题,但这感觉有点清洁......如果我能让它工作的话。如果您有更好的解决方案,我可以提出建议!
Here's an almost working example(plnkr)我想要做的事情......