AngularJS复选框
我想过滤结果。
有一个葡萄酒列表,我的愿望是没有复选框被检查,整个葡萄酒列表显示。 >当仅选中1个复选框时显示相关类别 我是AngularJS的新手,我尝试用ng模型没有成功,这里是没有ng模型的代码与功能相关联: <html ng-app="exampleApp"> <head> <title></title> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.10/angular.min.js"></script> <script> angular.module("exampleApp",[]) .controller("defaultCtrl",function ($scope) { $scope.wines = [ { name: "Wine A",category: "red" },{ name: "Wine B",{ name: "wine C",category: "white" },{ name: "Wine D",{ name: "Wine E",{ name: "wine F",{ name: "wine G",category: "champagne"},{ name: "wine H",category: "champagne" } ]; $scope.selectItems = function (item) { return item.category == "red"; }; $scope.selectItems = function (item) { return item.category == "white"; }; $scope.selectItems = function (item) { return item.category == "champagne"; }; }); </script> </head> <body ng-controller="defaultCtrl"> <h4>red: <input type="checkbox"></h4> <h4>white: <input type="checkbox"></h4> <h4>champagne: <input type="checkbox"></h4> <div ng-repeat="w in wines | filter:selectItems"> {{w.name}} {{w.category}} </div> </body> </html> 如何使用ng-model或ng-change将功能与每个复选框按钮相关联,以实现实时过滤模型?
有几个实现可能。这是一个:
>有一个$ scope.filter = {}对象来保存每个过滤器的状态。例如。 {red:true,white:false …}。 filterByCategory函数可以这样实现: function filterByCategory(wine) { // Display the wine if var displayWine = // the wine's category checkbox is checked (`filter[category]` is true) $scope.filter[wine.category] || // or // no checkbox is checked (all `filter[...]` are false) noFilter($scope.filter); return displayWine; }; 其中noFilter()是一个函数,它检查是否有任何过滤器被激活(如果没有,则返回true): function noFilter(filterObj) { return Object. keys(filterObj). every(function (key) { return !filterObj[key]; }); } 另见这个short demo。 更新: 我创建了一个修改版本,它支持多个过滤器(不仅仅是按类别过滤)。 >根据每个物业过滤每个酒单。 另见这个updated demo。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |