AngularJS – 从一组过滤器对象构建过滤搜索
发布时间:2020-12-17 16:58:53 所属栏目:安全 来源:网络整理
导读:我正在尝试为过滤搜索构建一个对象.用户可以向搜索添加多个过滤器,并且可以使用不同的值多次添加相同的过滤器. 向用户显示添加过滤器的按钮.添加的每个都显示从可用过滤器列表中填充的选择. 目前,当我添加两个相同的过滤器(即两个’过滤器A’)时,它们都共享
我正在尝试为过滤搜索构建一个对象.用户可以向搜索添加多个过滤器,并且可以使用不同的值多次添加相同的过滤器.
向用户显示添加过滤器的按钮.添加的每个都显示从可用过滤器列表中填充的选择. 目前,当我添加两个相同的过滤器(即两个’过滤器A’)时,它们都共享相同的基础值.当在选择框中选择过滤器时,如何使用Angular来断开初始过滤器数组的链接? JSFiddle Here HTML <div ng-app="myApp"> <div ng-controller="MyCtrl"> <button data-ng-click="addFilter()">Add Filter</button> <div data-ng-repeat="c in current.filters"> <div class="select-box"> <select data-ng-model="c.filter" data-ng-options="filter.name for filter in filters"></select> <input type="text" placeholder="Filter value" data-ng-model="c.filter.value"> </div> </div> <pre>{{current | json}}</pre> </div> JavaScript的 var app = angular.module('myApp',[]); app.controller('MyCtrl',function($scope) { $scope.current = {"filters":[]}; $scope.filters = [ {"id":"1","name":"Filter A","value":""},{"id":"2","name":"Filter B",{"id":"3","name":"Filter C",{"id":"4","name":"Filter D","value":""} ]; $scope.addFilter = function() { $scope.current.filters.push({}); }; }); 解决方法
我认为AngularJS并不像你期望的那样处理select ng-model指令.在这种情况下,它绑定到filters数组中的选定过滤器对象.这就是为什么当您更改具有相同名称的过滤器的值时,具有该名称的所有过滤器都会看到更改,因为基础对象是相同的.
你在这里要做的是自己绑定过滤器值而不是过滤器对象的一部分. 改变这一行 <input type="text" placeholder="Filter value" data-ng-model="c.filter.value"> 至 <input type="text" placeholder="Filter value" data-ng-model="c.value"> 您也不需要为每个过滤器定义“值”字段. 更新代码:http://jsfiddle.net/HyRUV/5/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读