मैं मॉडल है कि मैं एक तालिका दृश्य में प्रस्तुत करने के लिए इच्छा के एक संग्रह है। प्रत्येक मॉडल को तालिका में एक पंक्ति द्वारा दर्शाया जाना चाहिए, और यह पंक्ति टेम्पलेट का उपयोग करके उत्पन्न की जानी चाहिए। मैं उस पंक्ति को ईवेंट हैंडलर्स संलग्न करने के लिए सक्षम होना चाहिए (उदाहरण के लिए क्लिक करें), कि घटना पर कुछ विशिष्ट मॉडल है कि पंक्ति से संबद्ध के बारे में जानकारी की सूचना दें।बैकबोन टेबल व्यूइंग पंक्ति दृश्य - संरचना कैसे करें?
एक सामान्य तरीका मैंने ऐसा करने के लिए समान चीजों को देखा है, प्रत्येक पंक्ति को अपने स्वयं के दृश्य में तोड़ना है, और माता-पिता के दृश्य (इस मामले में तालिका कहें) को HTML दृश्य उत्पन्न करने के लिए पंक्ति दृश्य का उपयोग करें अपने कोड में शामिल करें। हालांकि मैं यह नहीं समझ सकता कि यह टेम्पलेट्स के साथ कैसे काम करता है।
इस मामले में, मैं विशेष रूप से रोव्यूव में ईवेंट संलग्न नहीं कर सकता क्योंकि इसमें किसी डोम तत्व (this.el
रीढ़ की हड्डी के लिए) का कोई संदर्भ नहीं है, यह बस एक स्ट्रिंग देता है। अधिकतम क्षमता के लिए टेम्पलेट का उपयोग करते समय, मैं जो चाहता हूं उसे कैसे प्राप्त कर सकता हूं?
सवाल घटनाओं, templating या नेस्टेड विचारों का उपयोग के बारे में विशेष रूप से नहीं है, लेकिन सही तरीके से उत्पादन के इस प्रकार प्राप्त करने के लिए रीढ़ का उपयोग करने के बारे में और अधिक।
नमूना कोड (जिसे fiddle में):
/** 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();
धन्यवाद!
फिर से लिखा जा सकता है 'setElement' टुकड़ा मुझे याद आ रहा था था - धन्यवाद! –
भयानक। एक सवाल, क्या आप _.bindAll कॉल पर विस्तार कर सकते हैं? मैं समझता हूं कि कार्यों को कहने के समय 'यह' अधिक उपयोगी बनाना है, लेकिन उस रूप में कॉल का मतलब क्या है? आप किस घटनाओं को बाध्यकारी प्रस्तुत करते हैं और प्रस्तुत करते हैं? आप कुछ भी प्रस्तुत करने के लिए बाध्य क्यों करेंगे? बहुत बहुत धन्यवाद! – Nicolas78
@ Nicolas78 _.bindAll गारंटी देता है कि 'this' में प्रस्तुत करना और renderOne देखने के लिए, और तत्व नहीं तो ईवेंट को ट्रिगर, उदाहरण के लिए किया जाएगा। यहां बहुत उपयोगी नहीं है, कोई बाध्यकारी सेट नहीं किया जा रहा है, लेकिन संग्रह को एक संग्रह.reset पर बुलाया जा सकता है, और संग्रह पर एक प्रस्तुत किया जा सकता है। – nikoshr