Bağlam sorununuz var. this
, aradığınız $el
ürününü içermiyor. Uygun this
işaret eden bir self
değişken bildirerek bunu düzeltebilirsiniz. Aşağıdaki kod sizin için çalışmalıdır.
render: function() {
var self = this; //Added this line to declare variable (self) that point to 'this'
this.$el.empty();
_.each(this._views, function(sub_view) {
self.$el.append(sub_view.render().el); //Used 'self' here instead 'this'
});
Yan Not: omurgasını eğilerek olarak ayrıca belge yeniden akıtma ile çok commong JavaScript sorun hakkında bilmeli. Koleksiyondaki her bir model için bir görünüm oluşturuyorsunuz. Performans sorunlarına ve özellikle eski bilgisayarlarda ve mobil cihazlarda yol açabilir. Kodunuzu, her seferinde DOM'ı güncellemek yerine, container
öğesinde her şeyi oluşturarak ve bir kez ekleyerek optimize edebilirsiniz. İşte bir örnek:
render: function() {
this.$el.empty();
var container = document.createDocumentFragment();
_.each(this._views, function(sub_view) {
container.appendChild(sub_view.render().el)
});
this.$el.append(container);
}
Mükemmel, harika çalışıyor! Çok teşekkürler ve ayrıca belge akışı sorununu aklımda tutacağım. Gerçekten çok yararlı bilgi! –