通过当前范围中的属性过滤ng-repeat

时间:2015-06-09 19:12:31

标签: javascript html angularjs angularjs-filter

我尝试过以下内容(在指令加载的模板中):

<li ng-repeat="lang in languages | filter: { Culture: '!{{currentLanguage}}'}">

这不起作用,所有语言都呈现

<li ng-repeat="lang in languages | filter: { Culture: !currentLanguage}">

这不起作用,没有语言呈现

语言有“文化”属性。 currentLanguage(在范围内)解析为'en-CA'(当我在Chrome开发工具中查看元素时,我可以看到此限制)。我希望返回除'en-CA'之外的所有语言。这可能不创建自定义过滤器吗?

2 个答案:

答案 0 :(得分:1)

AngularJS过滤器接受表达式,而您提供内插值

  

在HTML模板绑定中

{{ filter_expression | filter : expression : comparator}}

尝试更改为以下内容...

<li ng-repeat="lang in languages | filter: { Culture: !currentLanguage }">

有关详细信息,请参阅AngularJS filter docs

如果您需要一些自定义代码来解决此问题,那么更复杂的解决方案可能包括......

<li ng-repeat="lang in languages | filter: languageFilter">{{ lang.name }}</li>
$scope.languages = [{'name': 'en-US'}, {'name': 'en-CA'}]

$scope.currentLanguage = 'en-CA';

$scope.languageFilter = function(language) {
    return language.name != $scope.currentLanguage; // en-US
}

JSFiddle Link - 工作示例

答案 1 :(得分:0)

<li  ng-repeat="lang in languages | filter:{ Culture: '!en-CA'}" >

<li  ng-repeat="lang in languages | filter:{ Culture: !currentLanguage}" >