Json Backbonejs是否将数据从一个视图传递到另一个视图?
我有两种观点。。。我需要将数据从一个视图放到下一个视图,但我不知道如何实现这一点 有第一个功能视图:Json Backbonejs是否将数据从一个视图传递到另一个视图?,json,backbone.js,Json,Backbone.js,我有两种观点。。。我需要将数据从一个视图放到下一个视图,但我不知道如何实现这一点 有第一个功能视图: var CategoriesView = Backbone.View.extend({ initialize:function () { this.render(); }, render:function () { var that = this; var categories = new Categories(); categories.fetch({
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>
我拥有的json对象(所有类别)中的所有名称:
<li>there</li>
模板:
<script type="text/template" id="products-template">
<% _.each(products, function(product) { %>
<li class="productscls"><%= product.get('name') %></li>
<% }); %>
</script>
所有这些我的东西都显示正确,但当我尝试制作类似的东西时:
<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我认为您需要围绕类别和产品视图创建一个父包装器视图,然后是子视图。我也会在initialize方法中进行抓取,而不是在呈现中。我认为您可以使用Category视图来呈现一个元素,该元素包含所有类别,每个产品都有Id占位符。然后将其用作产品视图的模板,迭代每个产品,并将其插入匹配的(按Id)Category占位符元素中。那可能行得通。相当复杂的东西。这有意义吗 另一个想法可能是一个数据库视图,它可以“展平”这种关系。然后使用一个BB视图和基于该数据库视图的集合
第二个想法可能很难,因为不知道有多少产品属于这一类别。第一个想法肯定会奏效。构建一个模板,使每个类别都有Id标记的占位符,然后将其作为模板传递到产品视图,在每个类别Id占位符处插入产品列表。Locohost感谢您的回答!!!我正在考虑这个解决方案gist.github.com/makromat/6291554有经验吗?@MatejMarko:Ok nesting.js看起来很棒。我认为这可能是一个比我更好的解决办法。我也可以用这个:-)
<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>