我已经看了一段时间了。 stukennedy对angularjs filter (not working)的回答帮助我完成了许多工作。 现在我在尝试获得更多功能时遇到了问题。 我试图过滤以整数形式出现的数据,但过滤器不起作用,我假设因为HTML值给出一个字符串而且不一样。
<select ng-model="objects.level">
<option value="">All</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
继续我的数据:
<ul class="items">
<li ng-repeat="item in items | objFilter:objects" >
</li>
</ul>
和objFilter
app.filter('objFilter', function() {
return function(items, filter) {
if (!filter){
return items;
}
var result = {};
angular.forEach( filter, function(filterVal, filterKey) {
angular.forEach(items, function(item, key) {
var fieldVal = item[filterKey];
if (fieldVal && fieldVal.toLowerCase().indexOf(filterVal.toLowerCase()) > -1){
result[key] = item;
}
});
});
return result;
};
});
由于数据来自API,我无法控制我收到的数据。我在相同列表的其他地方使用objFilter来获取字符串值而没有问题。有谁能指出我正确的方向?
答案 0 :(得分:1)
如果不了解&#34;对象&#34;理解问题是什么真的很棒。对象,以及&#34;项目的一些数据&#34;对象。
也就是说,我已经使用了自定义过滤器的一些端口Here作为示例{{3}},但是在&#34; Select&#34;组件是过滤&#34;级别&#34;项目的属性。
基本上,自定义过滤器正在迭代&#34;对象&#34;值并过滤回答过滤器任何属性的项目中的所有值。
因此,如果您在组件上选择1,则此属性的值为&#34; level&#34;:
<select ng-model="objects.level">
最终值只会选择第一项:
{name:"bla", level:1}
因为它的等级与对象的值相同。
看看这个例子,我相信它会帮助你更好地理解它。
祝你好运!