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>