[英]How do I add a class to a JointJS cell?
我可以使用attr
方法更改单元格的属性,例如,设置链接的笔触:
conn.attr({'.connection': { stroke: 'red' }});
但是我宁愿在css文件中设置这样的属性,例如
.connection {
stroke: #999;
}
.connection.error {
stroke: #F00;
}
有没有一种方法可以将此类添加到生成的SVG中?
我试过了
conn.attr({'.connection': { class: 'error' }});
但这会删除.connection
类,这一点很重要。 它可以写
conn.attr({'.connection': { class: 'connection error' }});
但显然这不会扩展到具有多个正交类( error
, highlighted
...)
在其中一个官方演示中,我找到了以下代码:
function toggleLive(model, signal) {
// add 'live' class to the element if there is a positive signal
V(paper.findViewByModel(model).el).toggleClass('live', signal > 0);
}
我必须说,这看起来像违反模型-视图分离的行为,以这种方式直接与视图进行交互,但是如果在官方代码中使用了这种方法,那么我认为这是最惯用的方法。
任何想要在2018年回答这个2015年问题的人,也请尝试一下。
我有一个类似的问题,并使用highlighters
解决了。
cellView.highlight(null, {
highlighter: {
name: 'addClass',
options: {
className: 'some-custom-class'
}
}
});
上面的代码会将一个some-custom-class
到单元格视图元素中。 要删除该类,请使用具有完全相同参数的cellView.unhighlight(...)
方法。 请注意,现在它将仅删除some-custom-class
而其他类(如果存在)将保持原样。
参考: https : //resources.jointjs.com/docs/jointjs/v2.1/joint.html#highlighters.addClass
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.