似乎很容易,但经过几个小时的浪费时间后,我必须要问。
我有一个嵌套的数据视图列表,其中包含一个从api填充的商店。每条记录都很整齐,易于解析。像这样:
title: 'some title'
starred: false // some are "starred: true" and thats what I want
state: 1
statetyped: 1
我只需点按一个显示“已加星标”的按钮,然后过滤列表即可显示已加星标的项目。
我在阳光下尝试了一切,包括:
sto.filterBy(function(record){
var title = record.get('starred');
if(title == "true" || title == true)
return record;
});
//doesnt work
sto.filter(function (record) {
if (record.data.starred == true) {
return record;
}
});
//same, doesn't work
我甚至绝望并用underscore.js过滤了列表,创建了一个新商店并尝试加载新商店,但无济于事。
控制台错误是: 未捕获的TypeError:无法调用null 的方法'detach'(Default.js?_dc = 1392147674804:140)
如果有帮助:
我的数据视图视图:http://jsfiddle.net/8ycnR/
列表控制器:http://jsfiddle.net/a7ZaX/
答案 0 :(得分:1)
如果您的模型starred
字段类型配置为bool
,则只需使用Ext.data.Store
filter()
方法即可。
作为第一个参数,您应该传递属性名称,并作为第二个参数值来过滤:
sto.filter('starred', true);