【问题标题】:How to filter multiple dynamic values in angularJS如何在angularJS中过滤多个动态值
【发布时间】:2016-01-09 04:08:10
【问题描述】:

就像This question 中的问题提供者一样,我正在构建一个过滤多个值的过滤器。

但是,在我的情况下,我还希望从数组中动态创建过滤器。

所以,对于这个例子,而不是

<input type="checkbox" ng-model="genrefilters.action" />Action

<input type="checkbox" ng-model="genrefilters.family" />Family

我想像这样 ng-repeat 来创建输入框:

<div ng-repeat="distinctgenre in distinctgenres'">
    <input type="checkbox" ng-model="genrefilters.distinctgenre"/{{distinctgenre}}
</div>

但是,当我这样做时,我的过滤器与原始问题中的相同:

.filter('bygenre', function () {
return function (movies, genrefilters) {
    var items = {
        genrefilters: genrefilters,
        out: []
    };
    angular.forEach(movies, function (value, key) {
        if (this.genrefilters[value.genre] === true) {   // <=== THIS LINE ERRORS OUT
            this.out.push(value);
        }
    }, items);
    return items.out;
};

错误,TypeError:无法读取未定义的属性“Action”。

我正在像这样使用过滤器。

<tr ng-repeat="movie in displayedmovies | byCohort:genrefilters">
    {{movie}}

任何帮助将不胜感激。

感谢 dfsq 对括号符号的提醒。这似乎是主要问题。 (我还有一些其他愚蠢的命名约定问题)

【问题讨论】:

    标签: javascript angularjs angularjs-ng-repeat undefined angular-filters


    【解决方案1】:

    您应该使用括号表示法生成过滤器输入:

    <div ng-repeat="distinctgenre in distinctgenres'">
        <input type="checkbox" ng-model="genrefilters[distinctgenre]" /> {{distinctgenre}}
    </div>
    

    【讨论】:

    • 该死的,我知道这会很愚蠢。午饭回来后我会检查一下,但这可能是正确的答案。
    猜你喜欢
    • 2022-07-14
    • 2013-03-29
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 2013-01-07
    • 1970-01-01
    相关资源
    最近更新 更多