/ / Backbonejs prenášať údaje z jedného do druhého pohľadu? - json, backbone.js

Backbonejs prenášajú údaje z jedného pohľadu do druhého? - json, backbone.js

Mám dva pohľady ... Potrebujem vložiť údaje z jedného pohľadu do druhého, ale neviem, ako to môžem implementovať.

K dispozícii je prvé zobrazenie funkcií:

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);
}
})
}
});

Existuje šablóna:

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

Model a zbierka:

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

Všetky mená z objektov json (všetky kategórie), ktoré mám v:

<li>there</li>

... Do každej kategórie potrebujem implementovať Produkty .... tam mám zoznam produktov:

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);
}
})
}
});

Šablóna:

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

Model a chladná kolekcia:

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

Toto všetko sa mi ukazuje správne, ale keď sa pokúsim vytvoriť niečo také:

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

Takže tam môžete vidieť, čo chcem vyrobiť. Pre každú kategóriu každý produkt, ale toto nefunguje bez toho, aby boli údaje prenesené do kategórie alebo zobrazenia produktov ....

S pozdravom Makromat

odpovede:

0 pre odpoveď č. 1

Myslím, že budete chcieť urobiť zobrazenie rodičovského obaluokolo zobrazení kategórie a produktu, ktoré sú potom čiastkovými zobrazeniami. Tiež by som urobil svoje načítanie v inicializačných metódach, nie v renderoch. Myslím, že by ste mohli použiť zobrazenie kategórie na vykreslenie prvku, ktorý má všetky kategórie, so zástupnými symbolmi pre každý výrobok podľa ID. Potom to použite ako šablónu pre zobrazenie produktu, iterujte každý produkt a vložte ho do zástupného prvku zodpovedajúcej kategórie (podľa ID). To by mohlo fungovať. Docela zložité veci. Má to vôbec zmysel?

Ďalšou myšlienkou môže byť zobrazenie databázy, ktoré tento vzťah „sploští“. Potom použite jedno zobrazenie BB so zbierkou založenou na tomto zobrazení databázy.

Druhá myšlienka môže byť ťažká, keď neviete, koľkoprodukty patria do kategórií. Prvá myšlienka bude určite fungovať. Vytvorte šablónu, ktorá bude obsahovať každú kategóriu s identifikátormi označenými ID, a potom ju odovzdajte ako šablónu do zobrazenia produktu, do každého zástupného symbolu Id kategórie vložte zoznam produktov.