Backbone-nested:渲染嵌套元素

时间:2013-03-20 10:13:01

标签: backbone.js

我正在使用Backbone-nested插件,将Models声明为Backbone.NestedModel.extend()https://github.com/afeld/backbone-nested

这允许我检索数据:this.model.get('tasks.title')

我遇到的问题是呈现每个嵌套项目。我可以使用this.model.get('tasks[0].title')输出1。

但是,如果我编写一个循环来迭代每个嵌套,则在return this;方法之后调用render()$el将附加回{{1}它失败了。

问题

如何编写有效的方法让嵌套元素呈现给集合视图?

收藏视图

Collection $el

数据(项目)

App.Views.Tasks = Backbone.View.extend({

        el: '#taskList',

        initialize: function() {
            Event.on('tasks:show', this.show, this);
            this.collection.on('add', this.addOne, this);
        },

        render: function() {
            this.collection.each(this.addOne, this);
            return this;
        },

        addOne: function(project) {
            console.log(project.toJSON());
            var taskView = new App.Views.Task({ model: project });
            this.$el.append(taskView.render().el);
        },

        show: function(id) {
            var project = this.collection.get(id);
            var taskView = new App.Views.Task({ model: project });
            this.$el.html(taskView.render().el);
        }

    });

1 个答案:

答案 0 :(得分:0)

我似乎多次遇到过关于显示嵌套布局的问题。

有一个位于Backbone.js之上的JavaScript库,可以减少您必须编写的样板代码量,并且它们具有最适合嵌套集合的CompositeView。我已经包含了文档和讨论使用它的文章。

Marionette CompositeView documentation

Marionette CompositeView Article

A similar question that I answered earlier

希望这有帮助。