2013-10-11 47 views
0

我有以下設置和正常工作。在應用程序中獲取ID的多個實例

require(['models/profile'], function (SectionModel) { 
      var sectionModel = new SectionModel({id: merchantId, silent: true}); 
      sectionModel.fetch({ 
       success: function (data) { 
        $('#merchant-name').html(data.attributes.merchantName); 
       } 
      }); 
     }); 

但它只會在一個實例中起作用。我想知道如何正確編輯上面的代碼以允許多個實例。

<h3 id="merchant-name"></h3> 

內容在「保存」功能中生成。

 merchantName:$('#merchantName').val(), 
+1

這是不好的做法,有一個ID的多個實例。 ID應該是* unique *。改爲使用class。 – dthree

+1

id在模型上應該是唯一的,相同的id將由Backbone.js的Collection.set()和reset()合併。爲了澄清,類應該用在html上。 –

+0

我相信約定是通過get方法來訪問模型屬性,而不是使用屬性:data.get(merchant Name')。我知道這與你的問題無關,但我想我會指出。 –

回答

1

你想要做的是設置Backbone應用程序的其餘組件。 Backbone.js的美妙之處在於它能夠分離集合,模型和視圖,以便您的邏輯保持在適當的位置。

您需要使用AJAX調用來使用集合從服務器檢索模型。然後,使用該集合的重置功能。

下面是如何從服務器獲取模型集合的示例。

var MyCollectionType = Backbone.Collection.extend({ 
    getModelsFromServer:function() 
    { 
     var me = this; 
     function ajaxSuccess(data, textStatus, jqXHR) 
     { 
     me.reset(data); 
     } 

     $.ajax(/* Insert the ajax params here*/); 

    } 

}); 

var collectionInstance = new MyCollectionType({ 
    model:YourModelTypeHere 
    }); 

collectionInstance.getModelsFromServer(); 

然後,要呈現每一個,您需要爲每個模型和一個集合視圖創建一個視圖。雖然在學習基本的Backbone.js方面有很多資源,但我覺得您可能會從其中的一些中受益。

請記住,Backbone集合將默認合併具有相同ID的模型。 'id'通常在應用程序的後端引用一個模型,所以確保每個id實際上是你想要的。我使用具有非Restfull後端的應用程序,因此ID永遠不會傳輸到前端。

從Backbone.js開始,有一些優秀的資源可以開始使用。

https://www.codeschool.com/courses/anatomy-of-backbonejs (這是一個免費的當然在一定程度上,和一個偉大的首發。)

http://net.tutsplus.com/tutorials/javascript-ajax/getting-started-with-backbone-js/

http://javascriptissexy.com/learn-backbone-js-completely/

相關問題