在angularjs中动态添加过滤器选项

时间:2014-02-10 12:42:50

标签: javascript angularjs angularjs-filter

您好我有一个小项目,我希望从多个动态添加的文本字段中执行搜索。

这是我添加搜索字段的方式:

<div class="form-group" ng-repeat="choice in choices">
     <button ng-show="showAddChoice(choice)" ng-click="addNewChoice()">Add another choice</button>
     <input type="text" ng-model="choice.name" name="" placeholder="Search criteria">
</div>

后来我有一个ng-repeat的表格,这里是那个部分:

    <tr ng-repeat="todo in todos | filter: {filter from all fields}">
     .......
    </tr>

我想要做的是使用所有动态添加的搜索字段过滤内容。

2 个答案:

答案 0 :(得分:0)

您必须创建自己的过滤器来处理它。我已经走了,让你开始。

        $scope.myFilter = function(input){
            for(var key in input){
                for(var x = 0; x < $scope.choices.length; x++){
                    if(input[key] == $scope.choices[x].name){
                     return true;   
                    }
                }
            }
            return false;
        }

以下是输出的jsFiddle:http://jsfiddle.net/wsPrv/

答案 1 :(得分:0)

不是使用过滤器,而是自己在控制器中进行过滤。 Here是解决方案的更新小提琴。在第一个文本框中,将choice1替换为“some”,您将看到显示文本“Some stuff”的待办事项。

请参阅下面的相关部分。有关详细信息,请参阅小提琴。

        $scope.$watch('choices', function(newValue) {
            $scope.DisplayedTodos = [];
            // Filter items here and push to DisplayedTodos. Use DisplayedTodos to display todos
        }, true);