2011-11-24 42 views
1

我的視圖正確顯示假信息,所以我現在試圖應用異步數據加載來檢索實際數據。問題是我不確定我應該如何去做這件事。我應該自己創建AJAX調用嗎?我應該使用Socket API嗎?我應該使用內置的REST api(以及如何異步執行)?服務器端處理程序仍然未實現,因此服務器如何提供數據,這是完全靈活的。我應該如何將數據附加到我的Backbone視圖?

回答

2

我懷疑你自己的Ajax調用是這裏需要什麼...

我不能告訴插槽但我知道這是可能的,堅實的想法取決於你的應用程序。

我一直在使用默認的REST的功能,它很適合我, 一個小例子,我會怎麼做,

使它不那麼複雜,我將只是充當如果是從頁面加載,而不是使用路由器和全部。

var myView = Backbone.View.extend({ 
    initialize: function() { 
     _.bindAll(this, 'render'); 
     var v = this; 
     this.model.bind("change", function(e) { 
      this.render();  
     }); 
    }, 
    render: function() { 
     this.el.empty(); 
     this.el.text(this.model.get('name')); 
    } 
}); 

var myModel = Backbone.Model.extend({ 
    url: "/api/myModel", // change to your server code... 
    defaults: { 
     name: "john" 
    } 
}); 

$(function(){ 
    var m = new myModel({}); // dummy model 
    var v = new myView({ model: m, el: $('#myDiv')}); 
    v.render(); 

    m.fetch(); // takes the url of the model or collection and fetches it from the server side ... 

}); 

,如果你想測試一下取會做,你可以試試這個代碼從控制檯(或將它添加到jQuery的文檔加載功能:

m.set({ name: 'peter' }); 

此更改模型屬性「名」,你會馬上看到視圖本身更新,因爲它會監聽到模型的變化事件

對這些事件

更多信息可以在這裏找到:http://documentcloud.github.com/backbone/#Events

+0

你缺少的一件事是整個異步模型如何起作用。例如http://quickleft.com/blog/leveraging-deferreds-in-backbonejs但顯然這個模型存在問題。你如何去了解異步加載位? – chacham15

+0

它在那裏:),仔細看看'm.fetch()'...它啓動一個調用服務器(通過在模型中定義的URL)你的服務器端可以看你喜歡的任何方式,它只需要返回一個模型,我不能告訴你服務器端代碼,因爲我不知道你將使用什麼樣的服務器技術,asp.net,php,node.js,... – Sander

相關問題