2017-02-21 40 views
-2

为什么this.ImagesView在您致电renderPostCreateView为空?子视图在渲染方法中始终为空

即使它已被初始化,它始终为空。

PostCreateView = Backbone.View.extend({ 
    el: $('#create-product'), 
    template: _.template(createTemplate), 
    ImagesView: null,   
    initialize: function() {    
     this.ImagesView = new ImageViewCollection().render().el; 
    }, 
    render: function() { 
     this.$el.find('#images-collection').append(this.ImagesView) 
    } 
}); 
+1

你能告诉我们你的代码为'ImageViewCollection'吗? –

+1

请包括[mcve]。没有它,我们只能猜... –

+2

我们甚至不知道如何调用'PostCreateView'的'render' ...我希望有2k代表的人共享重现问题所需的代码... –

回答

-1

this.ImagesView = new ImageViewCollection().render().el;是坏惯例。

你应该做的是:

PostCreateView = Backbone.View.extend({ 
    el: $('#create-product'), 
    template: _.template(createTemplate), 
    ImagesView: null,   
    initialize: function() {    
     this.ImagesView = new ImageViewCollection() 
    }, 
    render: function() { 
     this.$el.find('#images-collection').append(this.ImagesView.render().el) 
    } 
}); 

更新

elImageViewCollection可能是零,因为你没有在render方法返回this。确保它这样做:

render: function(){ 
    // image view render logic 
    return this 
} 
+0

这就是我一直在做的事情,它说this.ImagesView无法读取属性'渲染'为空 – ONYX

+0

看到我更新的解决方案 –