在当前范围内通过 属性 过滤 ng-repeat

Filter ng-repeat by a property in the current scope

我尝试了以下方法(在由指令加载的模板中):

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

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

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

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

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

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

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

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

In HTML Template Binding

{{ 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 - 工作示例