Im新的Backbone,我正在掙扎着圍着我的腦袋。 讓我試試解釋一下我在做什麼: 我正在製作一個包含SVG組的SVG元素的應用程序。該小組將嵌套對方這樣的範圍內:Backbone.js:嵌套相同類型的模型和集合
http://i.stack.imgur.com/yAkTE.png
我試圖用主幹創建一個模型,併爲每個組的視圖。並使用集合在其中嵌套兒童羣體。
到目前爲止,我已經編寫了以下代碼,只是使用div而不是任何SVG,以便在我實現這一方面之前獲得邏輯工作。但我想我的想法可能在某個地方完全不可思議,任何幫助都將非常感激。
我知道在Backbone中有關於嵌套等的類似線程,但我還沒有找到任何幫助。
你可以看到的是什麼香港專業教育學院的書面至今這裏的jsfiddle:http://jsfiddle.net/ZqMeV/ 這裏是到目前爲止的代碼:
(function ($) {
var Cell = Backbone.Model.extend({
initialize: function(){
this.children = new CellCollection();
}
});
var CellCollection = Backbone.Collection.extend({
model: Cell
});
var CellView = Backbone.View.extend({
tagName: "div",
initialize: function(){
if(this.model.children.models.length > 0){
_.each(this.model.children.models, function(child){
console.log(child);
var cell = new CellView({
model: child
});
$(this.el).append(cell.el);
});
} else {
$(this.el).html('cell');
}
}
});
var Canvas = Backbone.Model.extend({
initialize: function(){
//below is just for testing purposes
this.content = new Cell();
var c = new Cell();
var d = new Cell();
var e = new Cell();
this.content.children.add(c);
this.content.children.add(d);
d.children.add(e);
}
});
var CanvasView = Backbone.View.extend({
el: $("#canvas"),
tagName: "div",
initialize: function(){
this.cellView = new CellView({
model: this.model.content
});
$(this.el).append(this.cellView.el);
}
});
var canvas = new Canvas();
var canvasView = new CanvasView({
model: canvas
});
} (jQuery));
感謝
很有趣,你的this.el是未定義的。處理它(你沒有忘記)。 – Loamhoof
不知道你將如何去做,但Backbone不會創建SVG元素,因爲元素需要具有名稱空間感知能力。你需要在initialize中做這樣的事情:this.el = document.createElementNS('http://www.w3.org/2000/svg','g'); –