使用过滤器更新ng-repeat

时间:2017-06-14 20:37:20

标签: javascript angularjs angularjs-ng-repeat

我有一些与我合作的角度代码,希望很快就能重构 我正在尝试根据复选框过滤<div> { this.state.results.map( ( record ) => { return <Comment /> } } </div>

我有一个看起来像这样的数据树......

ng-repeat

{ name: 'mail', rating: 2.4, source: 'EDD', users: 1000, description: '' } 工作设置为迭代

ng-repeat

该属性已重新命名为searchController中存在的产品服务,如此

HTML

<li ng-repeat="rule in property">{{rule[entityPropertyName]}</li>

指令

<search-section productName="qualifier" 
                product="qualifiers" 
                entityPropertyName="name"></search-section>

我正在使用控制器中的一个简单函数来复选复选框

controller: 'searchController',
scope: {
    product: '=',
    productName: '@',
    entityPropertyName: '@'
},

源名称从ex:媒体年龄返回。

我希望能添加

$scope.filterAdded = function(sourceName) {
    if($scope.filteredQualifiers.sourceName[sourceName]) {
        return sourceName;
    }
}  // returns source name 

到这样的$scope.filterAdded 迭代器

ng-repeat

指令支持此过滤器,如此

<li ng-repeat="rule in property | filter: filterAdded">{{rule[entityPropertyName]}</li>

将filterAdded视为一种功能。

添加过滤器会返回单个值,例如 EDD

我发现我需要过滤规则来源。

scope: {
    entities: '=',
    entityName: '@',
    entityPropertyName: '@',
    filterAdded: '&'
},

没有看到我可以比较的方式获取 rule.source 和filterAdded值。

source: 'EDD'

任何见解或反馈都表示赞赏。

1 个答案:

答案 0 :(得分:-1)

我进入Angular 4,所以我将使用这种语言,但你可以适应角度js(1.x)。

如果我做对了,会使用ngFor或ngRepeat和ngIf而不是使用管道。

<ul *ngFor=" let rule in property">

*请注意,ngFor将用于ul,而不是li。

然后,在li标签上,我会使用ngIf检查它是否在某个过滤器下。在ngIf上,您可以绑定到一个函数,甚至可以传递对象的属性或您正在迭代的数组项:

<li *ngIf="isThisOnFilter(rule['rating'])">{{ rule['name'] }}</li>

希望它有所帮助。