2013-08-19 3 views
0

Там у меня есть два вида ... Мне нужно поместить данные из одного вида в следующий, но я не знаю, как это реализовать.Backbonejs передает данные с одного на другое?

Там ли первая точка зрения функции:

var CategoriesView = Backbone.View.extend({ 
    initialize:function() { 
    this.render(); 
}, 
render:function() { 
    var that = this; 
    var categories = new Categories(); 
    categories.fetch({ 
     success: function (categories) { 
     var template = _.template($('#categories-template').html(), {categories: categories.models}); 
      that.$el.html(template); 
     } 
    }) 
}    
}); 

Существует шаблон:

<script type="text/template" id="categories-template"> 
     <% _.each(categories, function(category) { %> 
      <li><%= category.get('name') %></li> 
     <% }); %> 
    </script> 

модели и коллекции:

var Category = Backbone.Model.extend({ 
defaults: { 
    name: 'Category', 
    id: [] 
}, 
}); 
var Categories = Backbone.Collection.extend({ 
url: 'api/categories.json' 
}); 

Все имена из объектов JSon (все категории) У меня есть in:

<li>there</li> 

... Для каждой категории мне нужно реализовать продукты .... там у меня есть список продуктов:

var ProductsView = Backbone.View.extend({ 
    initialize:function() { 
    this.render(); 
}, 
render:function() { 
    var that = this; 
    var products = new Products(); 
    products.fetch({ 
     success: function (menus) { 
     var template = _.template($('#products-template').html(), {products: products.models}); 
      that.$el.html(template); 
     } 
    }) 
}    
}); 

Шаблон:

<script type="text/template" id="products-template"> 
     <% _.each(products, function(product) { %> 
       <li class="productscls"><%= product.get('name') %></li> 
     <% }); %> 
    </script> 

Модель и coollection:

var Product = Backbone.Model.extend({ 
defaults: { 
    name: 'Product', 
    category: 1, 
    id: [] 
}, 
}); 
var Products = Backbone.Collection.extend({ 
url: 'api/products.json' 
}); 

Все это мой материал показан правильно, но когда я пытаюсь сделать что-то вроде:

<script type="text/template" id="categories-template"> 
     <% _.each(categories, function(category) { %> 
       <li class="categorycls"><%= category.get('name') %></li> 
      <% _.each(products, function(product) { %> 
        <li class="productscls"><%= product.get('name') %></li> 
      <% }); %> 
     <% }); %> 
    </script> 

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

С уважением Makromat

ответ

0

Я думаю, что вы хотите сделать вид родительской обертки категории и продуктом взглядов, являются подзонами. Я бы также сделал выборку в методах инициализации, а не в рендере. Я думаю, что вы можете сделать это, используя представление категории, чтобы отобразить элемент, который имеет все категории с заполнителями для каждого продукта по идентификатору. Затем используйте это как шаблон для представления Product, итерации каждого Продукта и вставьте его в соответствующий элемент (place). Это может сработать. Довольно сложный материал. Это имеет смысл вообще?

Другой идеей может быть представление базы данных, которое «выравнивает» эти отношения. Затем используйте один вид BB с коллекцией на основе этого представления базы данных.

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

+1

Locohost Спасибо за ответ !!! Я думаю об этом решении gist.github.com/makromat/6291554 У некоторых есть опыт? – Makromat

+0

@MatejMarko: Ok nesting.js выглядит довольно здорово. Я думаю, что это может быть лучшим решением, чем мое. Я тоже могу это использовать :-) – Locohost

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