2017-02-21 20 views
-2

Почему this.ImagesView имеет значение null, когда вы позвоните, render в PostCreateView?subview всегда null в методе визуализации

Это всегда нулевое значение, даже если оно было инициализировано.

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

Мы даже не знаем, как вы называете 'render' из' PostCreateView' ... Я ожидаю, что кто-то из 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) 
    } 
}); 

Update

el из ImageViewCollection вероятно нуль, потому что вы не возвращаете this в методе render. Удостоверьтесь, что это так:

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

Это то, что я делал, и он говорит this.ImagesView Не удается прочитать свойство «render» из null – ONYX

+0

См. мое обновленное решение –