2013-10-03 67 views
1

我對Ember Data的行爲有些困惑。我對Ember數據中`store.filter`方法的行爲感到困惑

請看這個樣品:http://jsbin.com/ETEwUxU/9/edit。 點擊'轉到活動',然後點擊'轉到索引'。請重複這個導航一遍又一遍。 並檢查您的瀏覽器的JavaScript控制檯。

我的問題是...

  1. 當我們去index路爲什麼叫store.filter的功能?
  2. 爲什麼store.filter的函數調用的數量繼續增加,我們在上面重複?
  3. 當我們在ActiveRoute的模型鉤子中對store.find('post');進行分解時,爲什麼store.filter的函數調用的數量會增加?

此行爲是Ember Data的一項功能嗎?

回答

0

當記錄被添加到另一個記錄陣列它觸發器陣列以重新檢查如果過濾器是最新:

** 獲取一個類型和過濾器的功能,並返回一個活RecordArray那 保持最新,因爲新記錄已加載到商店或在本地創建 。

而且您每次點擊路線時都會創建實時記錄數組,每當您呼叫查找時都會保持最新狀態。

您可以將帖子向下移動一個級別並在帖子資源上獲取它們,並將該過濾器存儲在該級別。然後,當你點擊主動路線時,你可以從他上方的控制器獲取過濾列表。

AKA PostsActiveController從PostsController獲取過濾的結果集。

http://jsbin.com/OCAKIjA/4/edit

+0

謝謝您的澄清。所以我該怎麼做? 我不希望過濾函數被不必要地調用。 在這些情況下是否有最佳做法? – EMADURANDAL

+0

我會抓住資源並將其存儲在路徑上方的控制器上。 (這樣你可以來回反映索引/活動路線)而不需要重新篩選過濾列表。您還可以存儲索引路線的帖子,並避免爲此而擊中商店,但這取決於您。 – Kingpin2k

+0

謝謝!這對我很有幫助。我想嘗試後者。 – EMADURANDAL