2013-04-19 7 views
1

Учитывая список таких какУгловой переключатель в повторителе

var list = ['one','two','three']; 

В угловой, я хочу итерацию по списку только оказывающего определенные элементы. Что-то вроде:

<ul ng-controller="main"> 
    <li ng-repeat="item in list" ng-switch on="item"> 
     <span ng-switch-when="one">{{item}}</span> 
    </li> 
</ul> 

И есть выход выглядеть следующим образом:

<ul> 
    <li><span>one</span></li> 
</ul> 

Вместо этого, я получаю:

<ul> 
    <li><span>one</span></li> 
    <li></li> 
    <li></li> 
</ul> 

Я попытался нг скрытие но является крайне неэффективным, так как я большое количество элементов и только хотите отобразить один или два, а ng-hide отображает все из них, а затем скрывает неактивные с помощью css. Это проблема, потому что я делаю это в приложении JQuery Mobile, которое пытается украсить все элементы списка, включая скрытые, убивая производительность.

JSFiddle на http://jsfiddle.net/ghendricks/MXu3a/

ответ

1

Вы правы, что ng-hide не должны использоваться здесь, это работа для filters. Вы можете предоставить пользовательские функции для фильтрации списка: http://jsfiddle.net/ERMVj/

$scope.selectOne = function (input) { return input == "two" || input == "one"; }; 
<li ng-repeat="l in list | filter:selectOne"> 
     <span>{{l}}</span> 
    </li> 
Смежные вопросы