0

我对 Backbone.js 很陌生,在这里我正在尝试设计一个模型以在应用程序中使用。下面是情况:

我有以下表格:1)类别,产品,客户和订单。

每个类别都有一个或多个产品。

在主屏幕上,我选择显示所有类别,然后用户单击给定类别,我向他/她显示产品列表。

这是我尝试过的:

var Categories = Backbone.Collection.extend({
        url : 'http://localhost:8090/OrderManagement/om/categories'
    });

    var Category = Backbone.Model.extend({

        urlRoot : "http://localhost:8090/OrderManagement/om/categories"

    });

    var CategoryList = Backbone.View.extend({
        tagName:'ul',
        el : '.content',
        render : function() {
            var that = this;
            var categories = new Categories();
            categories.fetch({
                success : function(categories) {
                    var template = _.template($('#category-list-template')
                            .html(), {
                        categories : categories.models
                    });
                    that.$el.html(template);
                }
            })
        }
    });

    var CategoryView = Backbone.View.extend({
        el:'.content',

        render:function(options){ 
            var that = this;
            alert(options.id);
            if(options.id){
                that.category = new Category({id : options.id});
                that.category.fetch({
                    success:function(category){
                        console.log(category.toJSON());
                    }
                });
            }
            return false;
        }
    });

问题是在 CategoryView 我得到一个 Products 列表,不知道如何将它们映射到 Product 列表。请帮我一个可行的解决方案。

我想了解骨干模型是否可以在其中包含集合?

4

1 回答 1

1

我在处理您的代码时遇到了问题,但通常如果您有一个包含集合所需的所有数据的数组,您可以简单地创建集合并使用它。另一方面,如果您有集合的 id,您可以使用 fetch 来检索数据。这是一个简单的示例,可以让您有所了解 https://gist.github.com/anonymous/5896152如果您有时间花点时间观看 Nick Gauthier 视频https://www.youtube.com/watch? v=PqtYcHyyWJA 还有两个建议:1 渲染习惯上返回 this 以启用链接,成语 this.$el.append(someView.render.el) 很常见,第二为什么不初始化数据初始化方法而不是渲染,并在成功时调用渲染。祝你好运

于 2013-06-30T17:59:44.577 回答