View中的this.model有多个模型

时间:2012-12-27 20:53:14

标签: backbone.js

我在Backbone视图中看到了一些奇怪的行为。当我在console.log“this.model”时,我的渲染方法和我的一个自定义方法得到了不同的结果。

这就是我设置路线的方式:

app_router.on('route:showTemplates', function(id) {
                var listtemplate = new ListTemplateModel.Model({
                    id: id
                });
                listtemplate.fetch().then(function() {
                    var detailsview = new ListDetailsView.View({
                        model: listtemplate
                    });
                });
            });

如果我在我的视图的渲染方法中使用console.log,我得到了我期望的结果:

define(['use!backbone', 'helpers/templateHelper'], function(B, TemplateHelper) {
    var View = B.View.extend({
        el: '#page',
        template: TemplateHelper('taskDetailTemplate'),
        events: {
            'keypress #new-step': 'addOnEnter'
        },
        initialize: function() {
            this.render();
        },
        render: function() {
            this.$el.html(this.template(this.model.toJSON()));
        },
        addOnEnter: function(e) {
             this.input = this.$('#new-step');

            if (e.which !== 13) {// || !this.input.val().trim()) {
                return;
            }
            console.log(this.model.toJSON());           
        }
    });

    return {
        View: View
    };
});

但是我的“addOnEnter”方法中的console.log返回通过会话创建的所有模型实例的数组。它就像所有以前创建的模型一样被激活了。

enter image description here

1 个答案:

答案 0 :(得分:0)

这是因为事件被多次触发集合中的所有元素,如提到here。它只是以不同的方式表现出来。