Javascript Sencha触摸过滤器数据视图存储和刷新列表

Javascript Sencha触摸过滤器数据视图存储和刷新列表,javascript,jquery,extjs,sencha-touch,Javascript,Jquery,Extjs,Sencha Touch,看起来很容易,但在浪费了好几个小时的时间之后,我必须问 我有一个嵌套的dataview列表,其中包含一个从api填充的存储。每一条记录都很整洁,易于解析。像这样: title: 'some title' starred: false // some are "starred: true" and thats what I want state: 1 statetyped: 1 我只需要点击一个显示“星号”的按钮,然后过滤列表,只显示星号项目 我尝试过阳光下的一切,包括:

看起来很容易,但在浪费了好几个小时的时间之后,我必须问

我有一个嵌套的dataview列表,其中包含一个从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
我甚至不顾一切地用下划线.js过滤了列表,创建了一个新的商店并尝试加载新的商店,但没有成功


控制台错误为: 未捕获类型错误:无法调用null的方法“detach”(Default.js?\u dc=1392147674804:140)

如果有帮助:

我的数据视图:

列表控制器:

如果您的型号中有星号字段类型配置为
bool
,您只需使用
Ext.data.Store
方法即可

作为第一个参数,您应该传递属性名称,并作为第二个参数值传递给筛选依据:

sto.filter('starred', true);

我确实在我的模型中设置了bool:。。仍然在'src/layout/Default.js'中出现“uncaughttypeerror:cannotcallmethod'detach'of null”,很难说是什么导致了这个错误,但它不应该是由筛选存储直接导致的。这可能是由于您在对存储进行筛选并刷新dataview后所做的某些操作造成的。好的,关于“刷新”您肯定是正确的。我在dataview中完全删除了我的“刷新”功能,它按预期工作!现在的问题是,我不能让我的顶部停靠数据视图(按钮的水平列表)渲染,而不会因为“刷新”问题而丢失它。有没有更好的方法可以将另一个数据视图渲染为同一个数据视图(请参见上面我的提琴)的想法?您不应该将
dataview
渲染为另一个
dataview
。您可以使用
container
vbox
布局将屏幕分成更多的垂直部分,并将两个有趣的数据视图添加到其中-我已经尝试过这种方法,但是数据视图项目变得不可点击。我还失去了“scrollDock:true”的神奇(未记录)配置选项,该选项允许位于dataview顶部的停靠面板向上滚动。谢谢你!