2013-04-02 12 views
1

我不确定这是否可能,因为我很漂亮的网页。所以基本上我想要做的是迭代数组,遍历数组中的每个元素,用适当的信息填充骨干视图。我想我可以做的,是有这个模板在我的.cshtml声明:创建与骨干模板独特的div

<div id="template-sample-validation-error"> 
    <form id="sample-validation-form" class="form"> 
       <div id="sampleName" class="control-label">Sample Name:</div> 
     </form> 
</div> 

(有实际上是在实际的模板更多的领域,但我并没有包括所有这些)。

所以对于那个模板,我想我可以绑定到该模板的视图,并为集合中的每个项目添加一个新模板。问题是,因为ID是不唯一的,在我的骨干鉴于我的初始化方法,我不能抢唯一项目:

// some of the backbone view 
SampleValidationView = (function() { 
    return Backbone.View.extend({ 
     initialize: function (sample) { 
      var sampleMessage = sample.get('sampleName'); 

// iterating and creating a SampleValidationView to render 
_.each(samples, function (aView) {     
      var errorView = new SampleValidationView(aView); 
      this.$('#template-sample-validation-error').append(errorView.render().$el); 
     }); 

然后我发现这个职位,基本上增加了许多的股利使div独一无二。
Create Dynamic div with unique IDs - jQuery

我不知道我会如何用我创建的模板做这样的事情。我猜想另一种方法是做类似于文章中所做的事情,但我认为每个视图都有一个模板,并且根据数组中项目的数量将每个视图相互追加到一起会更清晰。但我卡住了。任何想法将不胜感激。谢谢! 。

回答

1

如果您使用凸显出你的模板,你可以在ID的末尾添加<%=%>追加模型的ID或传入的对象例如:

<div id-"unique-id-<%= id %>"> 
    ...content 
</div> 

那会只需在调用_.template({id:1})时将模型的id或传递到模板的对象放入模板中。这将使:

<div id-"unique-id-1"> 
    ...content 
</div> 

你应该做的,而不是明确地找到#模板样本验证错误使用jQuery,您应该声明你的观点的EL变种。这可以让你简单地调用这个$ el。所以也许这样的事情:

// some of the backbone view 
SampleValidationView = (function() { 
    return Backbone.View.extend({ 

     el : '#template-sample-validation-error', 
     template : _.template($('#template-sample-validation-error').html()), 

     initialize: function (sample) { 
      var sampleMessage = sample.get('sampleName'); 
     }, 

     render : function(){ 
      this.$el.html(this.template({id : 1})); // Some unique id 

      // iterating and creating a SampleValidationView to render 
      _.each(samples, function (aView) {     
       var errorView = new SampleValidationView(aView); 
       this.$el.append(errorView.render().$el); 
     } 
    }); 
+0

有用的提示 - 下划线有_.uniqueId方法生成唯一ID – dyurkavets