2017-02-21 29 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

看到我更新的解決方案 –