2014-02-11 59 views
0

似乎很容易,但幾小時和幾小時的浪費時間,我必須問。Sencha觸摸過濾器的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 

我甚至變得絕望,並與underscore.js篩選列表,創建新的商店,並試圖加載新的商店,但都無濟於事。


控制檯錯誤是: 遺漏的類型錯誤:無法調用空的 '分離'(Default.js _dc = 1392147674804:140)

如果有幫助:

我的數據瀏覽視圖:http://jsfiddle.net/8ycnR/
列表控制器:http://jsfiddle.net/a7ZaX/

回答

1

如果您的模型starred字段類型配置爲bool,您可以簡單地使用Ext.data.Storefilter()方法。

當第一個參數你應該通過屬性名和第二個參數的值作爲篩選:

sto.filter('starred', true); 
+0

我已經在我的模型中的布爾集:http://jsfiddle.net/9JTFS/ ..仍然在'src/layout/Default.js'中發生「Uncaught TypeError:Can not call method'detach'null' – jakeed1

+1

很難說出什麼原因導致了這個錯誤,但它不應該直接由過濾商店造成。這可能是由於存儲過濾和數據視圖刷新後執行的操作導致的。 – Akatum

+0

好吧你對'刷新'絕對正確。我完全刪除了我在數據視圖中的'刷新'功能,它按預期工作!現在的問題是我不能讓我的頂部停靠的數據視圖(一個水平的按鈕列表)渲染,而不會丟失到'刷新'問題。任何想法更好的方式來渲染另一個數據視圖到相同的數據視圖(請參閱我的小提琴上面) – jakeed1