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'); –