3

Это мой код:нг-повторить фильтр с условием угловой JS

<option ng-repeat="name in names" value="{{names.name}"> 
    {{names.name | limitTo:10 }} 
</option> 

Как я могу добавить условие:

if(names.name.length > 10) { 
    //add ... point after name displayed 
} 

, чтобы привести <option value="Alexander Bradley">Alexander ... </option>

Есть идеи?

+1

Мне любопытно, почему вы хотите ограничить длину имени. Если это потому, что у вас только такая ширина, я бы сделал это вместо css. –

+0

* аналогичный вопрос с ответами ниже ссылки * http://stackoverflow.com/questions/18095727/limit-the-length-of-a-string-with-angularjs/28262387#28262387 –

+0

* подобным вопрос с результатами ниже ссылки * http://stackoverflow.com/questions/18095727/limit-the-length-of-a-string-with-angularjs/28262387#28262387 –

ответ

7

Вы можете создать свой собственный фильтр, который сделает это, и включить параметр длины, если хотите.

.filter("ellipses", function() { 
    return function (item) { 
     if (item.length > 10) { 
      return item.substring(0, 10) + " ..." 
     } 
     return item; 
    }; 
}); 

<option ng-repeat="name in names" value="{{names.name}"> 
    {{names.name | ellipses }} 
</option> 

Вы можете включить длину аргумента, а и даже использовать limitTo сам:

.filter("ellipses", ["$filter", function ($filter) { 
    return function (item, limit) { 
     if (item.length > limit) { 
      return $filter("limitTo")(item, limit) + " ..."; 
     } 
     return item; 
    }; 
}]); 
+1

Это правильный ответ, хоть ты скорее всего, даст больше информации о том, как настроить фильтры, поскольку ОП может не знать. – tandrewnichols

+0

Это просто гений – kenza

2

Я думаю, что это то, что вы просили .. Ограничение имя до 10 символов, а затем добавить «...» до конца, если оно превышает 10 символов. Вот как я это сделаю. (Также исправлены некоторые из ваших синтаксических ошибок).

<option ng-repeat="name in names" value="{{name}}"> 
    {{name.length <= 10 ? name : name.substring(0, 10) + "..."}} 
</option> 
Смежные вопросы