ng-repeat过滤器,条件角为js

ken*_*nza 3 javascript angularjs angularjs-ng-repeat angular-filters

这是我的代码:

 <option ng-repeat="name in names" value="{{names.name}">
    {{names.name | limitTo:10 }}
 </option>
Run Code Online (Sandbox Code Playgroud)

我该如何添加条件:

if( names.name.length > 10) { 
     //add ... point after name displayed 
}
Run Code Online (Sandbox Code Playgroud)

得到结果 <option value="Alexander Bradley">Alexander ... </option>

有任何想法吗?

Exp*_*lls 7

您可以创建自己的过滤器来执行此操作,并根据需要包含length参数.

.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>
Run Code Online (Sandbox Code Playgroud)

您也可以包含length参数,甚至可以limitTo自己使用:

.filter("ellipses", ["$filter", function ($filter) {
    return function  (item, limit) {
        if (item.length > limit) {
            return $filter("limitTo")(item, limit) + " ...";
        }
        return item;
    };
}]);
Run Code Online (Sandbox Code Playgroud)