/ / Backbonejsは、あるビューから別のビューにデータを渡しますか? --json、backbone.js

Backbonejsは、あるビューから別のビューにデータを渡しますか? -json、backbone.js

そこに2つのビューがあります... 1つのビューから次のビューにデータを配置する必要がありますが、これを実装する方法がわかりません。

最初の関数ビューがあります:

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オブジェクト(すべてのカテゴリ)からのすべての名前:

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

モデルと冷却:

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>

だから、私が作りたいものを見ることができます。各カテゴリの各製品ですが、これはカテゴリまたは製品ビューにデータを渡さないと機能しません。

よろしくマクロマット

回答:

回答№1は0

親ラッパービューを実行する必要があると思いますカテゴリビューと製品ビューの周り。これらはサブビューになります。また、レンダリングではなく、初期化メソッドでフェッチを行います。カテゴリビューを使用して、IDごとの各製品のプレースホルダーを持つすべてのカテゴリを持つ要素をレンダリングすることができると思います。次に、それをProductビューのテンプレートとして使用し、各Productを繰り返して、一致する(ID別の)Categoryプレースホルダー要素に挿入します。それはうまくいくかもしれません。かなり複雑なもの。これはまったく意味がありますか?

別のアイデアは、この関係を「平坦化」するデータベースビューかもしれません。次に、そのデータベースビューに基づくコレクションで1つのBBビューを使用します。

2番目のアイデアはいくつあるかわからないので難しいかもしれません製品はカテゴリに含まれます。最初のアイデアは間違いなく機能します。 Idがマークされたプレースホルダーを持つすべてのカテゴリを持つテンプレートを作成し、それをテンプレートとして製品ビューに渡し、各カテゴリIDプレースホルダーに製品のリストを挿入します。