Sencha Touch过滤数据视图存储和刷新列表

时间:2014-02-11 20:04:37

标签: javascript jquery extjs sencha-touch

似乎很容易,但经过几个小时的浪费时间后,我必须要问。

我有一个嵌套的数据视图列表,其中包含一个从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/

1 个答案:

答案 0 :(得分:1)

如果您的模型starred字段类型配置为bool,则只需使用Ext.data.Store filter()方法即可。

作为第一个参数,您应该传递属性名称,并作为第二个参数值来过滤:

sto.filter('starred', true);