2013-10-11 45 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/

相关问题