2013-10-10 34 views
0

我有几个选择,我正在用ng-options填充。我想知道是否可以动态分组/不分组这个选择。ng-options中的动态'group by'

这里有一个(simplfied)<select>

<select class="brand-select" 
    ng-model="selectedBrand" chosen="brandList" 
    ng-options="brand as brand.name group by brand.bestseller for brand in brandList"> 
</select> 

我希望能够在该选择这间切换(注意,有在这一个没有GROUP BY):

<select class="brand-select" 
    ng-model="selectedBrand" chosen="brandList" 
    ng-options="brand as brand.name for brand in brandList"> 
</select> 

我想将分组绑定到$ scope变量。

我试过将选择绑定到一个指令,并动态地设置ng-options attr的值,但似乎这是不可能的。

除了有两个选择和显示/隐藏其中之一之外,还有什么建议可以做到这一点?

回答

1

使用功能“分组依据”值,以确定 - 如果不需要组返回null:如果你采用了棱角分明1.4

$scope.grouping = true 
$scope.groupBy = function(v){return $scope.grouping ? v[0]: null} 
... 
<select ng-model="selected" ng-options="k group by groupBy(v) for (k,v) in friends"></select>  

http://jsfiddle.net/cWH4n/

+0

非常好,这正是我所期待的,谢谢! – nburkley

3

虽然从上面4vanger答案是正确的。 8及以下版本,请注意,使用角度1.5以上时,必须返回'undefined'以禁用分组。否则会出现“空”组。

+0

为我节省了一些窍门,正是这个问题与上面提到的示例4vanger有关。非常感谢! – chrney

+0

有没有办法在ng选项中使用分组,同时在组外部留下一些元素?简单地设置未定义的组值不起作用。它在1.4.4中没有出现问题,一个空字符串做了窍门,但是现在我得到了一个空组,用于我想保持分离的元素。 – downhand