2011-03-31 123 views
15

過去幾天我一直在使用backbone.js,編輯Todos示例並編寫我自己的版本。初始backbone.js數據獲取

我現在正在考慮創建一個具有多個路徑的控制器,但是我發現在遵循Todos示例之後發現的是調用Todos.fetch(),導致項目重新呈現。我認爲它調用刷新事件?

的Backbone.js的文件說:

注意獲取不應該被用來填充在頁面加載的集合 - 在加載時所需的所有車型應該已經自舉到位。 fetch旨在爲不需要立即需要的接口提供懶惰加載模型:例如,可以切換打開和關閉的註釋集合的文檔。

然後加載數據的最佳方法是什麼?在實例化主控制器時,我可以使用ajax調用來獲取數據並傳遞它嗎? 如果我要更換頁面並顯示新視圖,那麼情況如何?我只需撥打fetch()函數?

回答

7

這一點的文檔是爲了提醒你,你應該加載初始頁面加載的所有數據,並對所有後續加載使用fetch。

你可以有這樣的代碼:

MyCollection = new Collection({some json data}); 

比頁面加載速度更快,然後一對夫婦的請求加載數據。

+0

謝謝,我認爲這將在控制器初始化? – Webster 2011-04-01 02:11:38

+0

在初始頁面的腳本標記中。 – Julien 2011-04-01 02:26:15

+0

你會把數據傳給控制器嗎?將它放在控制器的init中是否更有意義? – Webster 2011-04-01 11:35:47

3

我是個有點困惑的文檔的措辭爲好,但取是要告訴你的收藏模式去服務器,並通過無論是你自己的同步功能或骨幹獲取數據的方式。同步已經在內部使用ajax,並可以將結果傳遞給您的成功或錯誤功能。

至於你提到的託多斯的例子,那是如何收集是爲了工作。它會更新模型,然後觸發「刷新」事件,這可能會迫使您的視圖被重新渲染,就像您所說的那樣。

我強烈建議您查看Backbone.js代碼。它的記錄非常有效,事件和方法調用的流程很容易掌握。

+1

我認爲在查看其他代碼以及Juliens之後,需要在我的初始控制器中執行我自己的AJAX調用。 – Webster 2011-04-01 02:10:35

+2

這就是你最終在做什麼......所以你會遇到更好的事情......我想骨幹會指定一些方法來做到這一點,即使它只是一個Ajax調用......我現在處於相同的情況 – 2011-08-16 01:25:44