0
我並沒有面臨技術挑戰,因爲我有一些工作代碼。我只是不確定這是正確的路要走,所以我想繼續沿着這條道路前,由一些專家運行...UnderscoreJS嵌套模板:我該怎麼做?
我使用的'渲染'功能從這個職位:https://stackoverflow.com/a/10136935/1480182
然後我有兩個骨幹觀點:
DetailLineView = Backbone.View.extend({
initialize: function (options) {
this.options = options;
this.render();
},
render: function() {
var variables = { detailLine: this.options.detailLine };
this.$el.html(render("DetailLine", variables));
}
});
和
CustomerView = Backbone.View.extend({
initialize: function (options) {
this.options = options;
this.render();
},
render: function() {
var dl = "";
_.each(this.options.customer.attributes.detailLines, function (line) {
var v = { detailLine: line };
dl += render("DetailLine", v);
});
var variables = { customer: this.options.customer.attributes, detailLinesHtml: dl };
this.$el.html(render("Customer", variables));
}
});
相應的模板當然和。
現在上面的代碼工作,但據我可以告訴我實際上沒有使用DetailLineView。
我有一種感覺,有一個(很多?)更優雅的方式做到這一點,但我沒有看到如何...任何人都可以幫忙嗎?
編輯:更好的解決方案(?):
我改變了我的CustomerView這樣:
CustomerView = Backbone.View.extend({
initialize: function (options) {
this.options = options;
},
render: function() {
var variables = { customer: this.options.customer.attributes };
this.$el.html(renderTemplate("Customer", variables));
var dlv = new DetailLineView({
el: $('.detailLinesContainer', this.$el),
detailLine: this.options.customer.attributes.detailLines[0]
});
dlv.render();
}
});
我好喜歡它,現在我用我的DetailLineView ...