【发布时间】:2016-10-07 23:35:01
【问题描述】:
这是我的小提琴http://jsfiddle.net/7mcj04or/
我无法让这个东西工作,我正在尝试在我选择的复选框上创建一个自定义过滤器。这是我的代码:
HTML:
<div ng-controller="AppCtrl">
<label class="item-input-wrapper">
<input type="text" placeholder="Search" ng-model="searchTerm">
</label>
<div ng-repeat="l in letter">
<input ng-model="letter" type="checkbox" ng-checked="exists(l,selected)" ng-click="toggle(l, selected)">Letter {{l}}
</div>
<div ng-repeat="name in names | filter: searchTerm">
<p>
{{name}}
</p>
</div>
<pre ng-bind="selected | json"></pre>
</div>
JS:
var app = angular.module('starter', []);
app.controller('AppCtrl', function ($scope, $http) {
$scope.searchTerm = '';
$scope.names = ['Jimmy','Farris','Lance', 'Joaquin', 'Henry'];
$scope.letter = ['L','E','Y', 'H', 'U'];
$scope.selected = [];
$scope.toggle = function (item, list) {
var idx = list.indexOf(item);
if (idx > -1) {
list.splice(idx, 1);
}
else {
list.push(item);
}
};
$scope.exists = function (item, list) {
return list.indexOf(item) > -1;
};
});
app.filter('selectedLetter', function () {
// filter to check array of elements
return function (selected) {
return selected;
}
});
我希望我的 ng-repeat 看起来像这样:
<div ng-repeat="name in names | filter: searchTerm">
<p>
{{name | selectedLetter}}
</p>
</div>
我尝试编写的自定义选择过滤器不会过滤我选择的任何复选框。所以当我选择字母 L 时,我希望 Lance 出现等。
这又是我的搜索工作,而不是自定义过滤器。
【问题讨论】:
标签: javascript html angularjs filter