2013-04-02 1 views
1

Я не уверен, что это возможно, так как я довольно noob для Интернета. Таким образом, в основном, что я хочу сделать, это итерация через массив, и для каждого элемента в массиве, заполнить представление о магистрали соответствующей информацией. То, что я думал, что я мог сделать, это иметь этот шаблон, объявленный в моем .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> 

(есть на самом деле больше полей в фактическом шаблоне, но я не включил их все).

Так что с этим шаблоном, я думал, что могу привязать к этому шаблону привязку и добавить новый шаблон для каждого элемента в коллекции. Проблема заключается в том, поскольку идентификаторы не являются уникальными, в моем методе инициализации моего позвоночника точки зрения, я не могу захватить уникальные предметы:

// 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

Если вы используете подчеркивания для шаблонов вы можете добавить <% =%> в конце идентификатора, чтобы добавить идентификатор модели или объект, переданный в Ex:

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

что бы просто поместите идентификатор модели или объекта, который вы передали в шаблон, когда вы вызывали _.template ({id: 1}). Это дало бы:

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

Что вы должны сделать вместо явного нахождения # шаблонный образец-проверки-ошибка с JQuery, вы должны объявить эль-вар вашего зрения. Это позволяет просто называть это. $ 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 метод для генерации уникальных идентификаторов – dyurkavets

Смежные вопросы