Tablo görünümünde oluşturmak istediğim bir model koleksiyonum var. Her model, tabloda tek bir satır ile temsil edilmeli ve bu satır bir şablon kullanılarak oluşturulmalıdır. Olay işleyicisine, o satıra ilişkin modelle ilgili bazı özel bilgileri içeren olay bildirimine ekleyebilmem gerekir.Omurga tablosu görünümünde satır görünümü görünümü - nasıl yapılandırılır?
Bunu yapmak için benzer şeyler gördüğüm yaygın bir yol, her sırayı kendi görünümüne ayırmak ve bir ana görünümüne sahip olmaktır (bu durumda, bu durumda tablonun), html'yi oluşturmak için satır görünümünü kullanır. kodunuza ekleyin. Ancak bunun şablonlarla nasıl çalıştığını anlayamıyorum.
Bu durumda, bir dom öğesine (omurga için this.el
) hiçbir başvuruda bulunmadığından özel olarak RowView'a olay ekleyemiyorum, yalnızca bir dize döndürür. Bir şablonu maksimum kapasitede kullanırken istediğimi nasıl sağlayabilirim?
soru olaylar, çiftleşmiş veya iç içe görünümleri kullanma konusunda özel olarak değil, ama çıkış bu tür ulaşmak için Omurga kullanmak için doğru yolu hakkında daha fazla. (Aynı zamanda fiddle olarak)
örnek kod:
/** View representing a table */
var TableView = Backbone.View.extend({
tagName: 'table',
render: function() {
var rows = _.map(this.collection.models, function(p) {
return new RowView({model: p}).render();
});
$('body').html(this.$el.html(rows.join('')));
}
});
/** View representing a row of that table */
var RowView = Backbone.View.extend({
render: function() {
// imagine this is going through a template, but for now
// lets just return straight html.
return '<tr>' +
'<td>' + this.model.get('name') + '</td>' +
'<td>' + this.model.get('age') + '</td>' +
'</tr>';
}
});
var data = [
{'name': 'Oli', 'age': 25},
{'name': 'Sarah', 'age': 20}];
/** Collection of models to draw */
var peopleCollection = new Backbone.Collection(data);
var tableView = new TableView({collection: peopleCollection});
tableView.render();
teşekkür ederiz! görüşlerin bir hiyerarşi işlemek için
şekilde tekrar yazılabilir 'setElement' Ben kayıp olmuştu parçaydı - teşekkürler! –
harika. bir soru, _.bindAll çağrısında detaylandırır mısınız? Anladığım kadarıyla, “bu” işlevi, işlevlerin çağrıldığı zamanda daha kullanışlı hale getiriyordu, ancak bu formdaki çağrı ne anlama geliyor? Oluşturmayı ve renderOne'ı hangi olaylarla ilişkilendiriyorsunuz? Neden birşeye renderOne bağlarsınız? Çok teşekkürler! – Nicolas78
@ Nicolas78 _.bindAll, 'bu' render ve renderOne'da olayı tetikleyen öğeyi değil, olayı garanti eder. Burada çok yararlı değil, hiçbir bağlayıcı ayarlanmadı, ancak render bir koleksiyona çağrılabilirdi ve renderOne bir koleksiyonda – nikoshr