应用于作为svg元素的el的主干事件
我有一个SVG画布,其中包含我想要响应单击的文本。以下代码无法完成任务:应用于作为svg元素的el的主干事件,svg,click,backbone.js,backbone-events,jquery-svg,Svg,Click,Backbone.js,Backbone Events,Jquery Svg,我有一个SVG画布,其中包含我想要响应单击的文本。以下代码无法完成任务: var MyView = Backbone.View.extend({ tagName : "text", events : { "click" : "clickhandler" }, initialize : function() { this.centerX = this.options.centerX; this.centerY = this.options.centerY; this.svg
var MyView = Backbone.View.extend({
tagName : "text",
events : {
"click" : "clickhandler"
},
initialize : function() {
this.centerX = this.options.centerX;
this.centerY = this.options.centerY;
this.svg = this.options.svg;
this.tagText = this.model.get("tag_name");
this.render();
},
clickhandler : function(event) {
console.log("I was clicked!"); //This is not firing on click
},
render : function() {
this.el = this.svg.text(this.centerX, this.centerY, this.tagText, {});
return this;
}
});
这将在另一个视图的渲染函数中调用,如下所示:
container.svg({
onLoad : function(svg) {
for ( var i = 1; i < that.relatedTags.length; i++) {
tagView = new MyView({
model : this.relatedTags.at(i),
centerX : 100,
centerY : 200,
svg : svg
});
}
container.append(tagView);
}
});
然后单击可以工作,但我需要访问与视图关联的主干模型,因此我更喜欢主干事件而不是直接的JQuery事件。这里的问题是,您在render方法中设置了视图的元素。但是主干尝试在初始化时添加事件。因此,当主干尝试添加事件时,案例中没有任何元素。因此,您必须使用svg文本启动视图,或者在渲染方法中手动添加事件 也许您可以在svg本身上添加事件,jquery足够聪明来处理委托。但我不确定在这种情况下
$(tagView.el).click(function() {
alert("xx");
});