目录
前言TextBlock的使用TextBlock的配置属性节点内文本的双击编辑前言
文接上回,我们已经使用gojs
实现了一个最最最基本的树形布局。这次我们开始对图形的骨架进行一个内容展示上的丰富和显示风格上的美化。可以说我们图形的节点部分是我们整个图形大部分信息的一个展示载体。而我们的需求当中,为了使一些信息更加形象,醒目。我们会用到文本,图标,图片,和节点的背景的颜色等等来显示不同类型的节点。
TextBlock的使用
本次的介绍便是通过TextBlock
的属性来控制节点内的文本显示内容和一些样式的修改,对我们的关系图进行进一步的丰富。首先我们先准备一些数据
(资料图片)
nodes: [ { key: "1", text: "三国人物志", nodeBs: "root", }, { key: "1-1", text: "曹操", nodeBs: "cc", }, { key: "1-2", text: "刘备", nodeBs: "lb", }, { key: "1-3", text: "孙权", nodeBs: "sq", }, ], links: [ { from: "1", to: "1-1", }, { from: "1", to: "1-2", }, { from: "1", to: "1-3", }, ],
其中nodes
中的key
字段为节点的唯一标识,为必须。而text
字段则是我们希望显示到节点上的内容,nodeBs
主要是一个节点的标识,方便批量处理一些节点的时候进行判断。links
中存放的为必须的from(起点)和to(终点)字段。
this.myDiagram = $$(go.Diagram, "myDiagramDiv", { layout: $$(go.TreeLayout),//在初始化时画布的布局方式 }); this.myDiagram.nodeTemplate = $$( go.Node, //节点的node配置项 "Horizontal", //节点内部的布局方式 $$( go.TextBlock,//指定为gojs规定的文本显示形式 new go.Binding("text", "text") //将我们的text字段显示到节点中 ) ) this.myDiagram.model = new go.GraphLinksModel(this.nodes, this.links);
在这里我们可以看一下,通过我们实例化之后的nodeTemplate
属性来实现我们的node
的模板进行一个自定义的填充内容,来实现节点内部不同内容的显示。其中go.Node
是固定搭配,就是我们是对node
模板进行一个配置,然后就需要我们我们的操作对象为node
,然后再内部嵌套各种其他的模板。Horizontal
是节点内部的一种布局方式,这个我们后面会统一进行分析。
当然你也可以写成这种形式
this.myDiagram.nodeTemplate = new go.Node().add(new go.TextBlock().bind("text"));
因为第一种的写法比较清晰,因此我们主要是采用第一种方式进行节点内的布局填充,这样我们就得到了这样一个图形
TextBlock的配置属性
在这里对显示的文字修改一下样式,这里列举一些常用的属性
$$( go.TextBlock,//指定为gojs规定的文本显示形式 { stroke: "red",//设置字体颜色,默认为黑色 background:"yellow",//字体的背景颜色,默认透明 font: "14px,sans-serif ",//字体的名称,大小,是否加粗等 margin:8,//类似css,外边距 width:20,//宽度 height:20,//高度 textAlign:"left",//文本的对齐方式,有left,center,right三种属性 alignment:go.Spot.Left, // 文本在父级结构中的对齐方式,有go.Spot.Left,go.Spot.Center,go.Spot.Right三种属性 minSize: new go.Size(10, 14),//文本的最小尺寸,两个参数分别为宽和高 maxSize: new go.Size(NaN, NaN), //文本的最大宽度,如果我们设置为NaN,其尺寸会进行自适应 overflow: go.TextBlock.OverflowClip,//文本溢出宽度之后的显示方式,OverflowClip为换行.OverflowEllipsis是显示省略号 maxLines: 2,//换行之后最多显示几行 verticalAlignment:"Top"//垂直方向上的的对齐方式,有Top,Center,Bottom三种属性 }, )
既然textAlign
和alignment
都是文本的对齐方式,那他们之间有什么区别呢?我们把节点单独给拿出来,然后分别对添加这两种属性的三个参数值进行对比一下。
$$(go.Panel, "Vertical",{width:300,background:"#67B73C"},//父级模板,相当于外层html标签,然后我们给外层标签一个宽度 $$(go.TextBlock,{textAlign:"left",text:"textAlignLeft",width:200,background:"#FF9900",margin:5}), $$(go.TextBlock,{textAlign:"center",text:"textAlignCenter",width:200,background:"#FF9900",margin:5}), $$(go.TextBlock,{textAlign:"right",text:"textAlignRight",width:200,background:"#FF9900",margin:5}), $$(go.TextBlock,{alignment:go.Spot.Left,text:"alignmentLeft",width:200,background:"#FF9900",margin:5}), $$(go.TextBlock,{alignment:go.Spot.Center,text:"alignmentCenter",width:200,background:"#FF9900",margin:5}), $$(go.TextBlock,{alignment:go.Spot.Right,text:"alignmentRight",width:200,background:"#FF9900",margin:5}) ),
我们在外层增加一个模板并且添加宽度之后,分别在内层的文本标签设置不同的属性和属性值,显示内容可以知道。textAlign
属性是如果设置了文本区域的宽度,在文本显示区域内部居左、居中、居右显示。而alignment
属性则是以文本区域为一个整体,全部内容在父级模板中的相对位置居左、居中、居右。
然后我们看一下overflow
的两种文本溢出方式的区别
$$(go.Panel, "Vertical",{width:300,background:"#67B73C"}, $$(go.TextBlock,{text:"go textBlock overflowDefult overflowDefult",width:100,background:"#FF9900",margin:5}), $$(go.TextBlock,{text:"go textBlock overflowDefult overflowDefult",maxLines: 2,width:100,background:"#FF9900",margin:5}), $$(go.TextBlock,{overflow: go.TextBlock.OverflowClip,text:"go textBlock overflowClip overflowClip",width:100,background:"#FF9900",margin:5}), $$(go.TextBlock,{overflow: go.TextBlock.OverflowClip,maxLines: 2,text:"go textBlock overflowClip overflowClip",width:100,background:"#FF9900",margin:5}), $$(go.TextBlock,{overflow: go.TextBlock.OverflowEllipsis,text:"go textBlock overflowEllipsis overflowEllipsis",width:100,background:"#FF9900",margin:5}), $$(go.TextBlock,{overflow: go.TextBlock.OverflowEllipsis,maxLines: 2,text:"go textBlock overflowEllipsis overflowEllipsis",width:100,background:"#FF9900",margin:5}), ),
由此我们可以发现overflow
的两种属性go.TextBlock.OverflowClip
和go.TextBlock.OverflowEllipsis
在单独设置的时候是和默认效果没有区别的,都是会默认进行一个换行。而如果我们再加上行数的限制maxLines: 2
之后就出现了区别go.TextBlock.OverflowClip
属性是和默认情况是一样的,会对我们的文本进行一个整词切割,而go.TextBlock.OverflowEllipsis
则是出现了超出部门内容显示...,因此在开发过程中我们可以可以对超长文本进行go.TextBlock.OverflowEllipsis
属性和maxLines
的结合使用,保证项目中的的节点的规格不至于过长而导致图形的显示冗余。
节点内文本的双击编辑
gojs还为我们提供了editable
属性,可以在节点内直接双击出现的输入框对我们的节点内的文本显示进行一个编辑,在编辑完成之后,只需要点击画布就可以把编辑后的内容显示到节点之中。
$$( go.TextBlock, { editable:true,//是否开启双击编辑节点内部文本功能 textEdited: function (tb, olds, news) {//编辑文本成功之后的回调函数 console.log(tb.part.data,olds,news) } }, new go.Binding("text", "text") ),
在节点的文本框双击之后就可以出现一个输入框的弹出,可以输入新的内容之后点击画布,然后在编辑成功之后的回调函数textEdited
分别有三个参数,我们可以通过第一个参数的tb.part.data
来获取我们操作的节点的全部数据,而第二个参数则是编辑之前的内容(也就是我们示例中的曹操),而第三个参数则是我们编辑之后的内容(也就是我们示例中的曹操阿瞒)。因此我们可以通过获取之后的新值来更改我们的数据来保证数据和图中内容对应。
以上就是GoJs的文本绘图模板TextBlock使用实例的详细内容,更多关于GoJs TextBlock文本绘图模板的资料请关注脚本之家其它相关文章!
相关推荐
- (2023-04-16)GoJs的文本绘图模板TextBlock使用实例-今日视点
- (2023-04-16)每日热闻!二十一世纪出版社品牌介绍_二十一世纪出版社
- (2023-04-15)荣获“河南省省长质量奖”,仰韶交出“高质量”答卷!
- (2023-04-15)瑞纳智能实控人控制企业隐而未披 财务总监曾在外专职或“踩线”-世界时快讯
- (2023-04-15)香港dfs免税专柜-香港dfs免税店中文官网
- (2023-04-15)9月国内光伏硅料产量为7.62万吨 环比增长23% 每日焦点
- (2023-04-15)【快播报】中字头闻风而动,外资盯上这5家,谁会成为领头羊
- (2023-04-15)环球新消息丨交流 | 大运河国际文化交流中心调研座谈会在什刹海召开 孙硕强调:要以中国大运河世界遗产北端点什刹海为依托,挖掘运河文化内涵,讲好中国故事
- (2023-04-15)心太平轩医案_时讯
- (2023-04-15)陕西跑友早早做好功课,带上老婆来场“武汉汉马游”_天天热资讯
- (2023-04-15)财报解读 | 微创光电:应收款反超营收赊销加剧 行业竞争激烈市占率不足1%
- (2023-04-15)天天速递!如何备考会计中级财务管理
- (2023-04-15)马牙豆的吃法_如何挑选马牙大豆|热点聚焦
- (2023-04-15)3月70城房价出炉:64城新房价格环比上涨 武汉、昆明领涨
- (2023-04-15)环球观速讯丨美联储缩债政策加速落地 黄金市场进入反弹窗口
- (2023-04-15)新资讯:华密新材独董及核心技术人员履历现两个版本 信披质量或打折
- (2023-04-15)首届淮海经济区公积金十城联动宣传月活动展开 头条焦点
- (2023-04-15)观点:山西焦化(600740):4月14日北向资金减持31.04万股
- (2023-04-15)【世界热闻】海特高新(002023):4月14日北向资金增持20.08万股
- (2023-04-15)全球微头条丨2023国际人才培养与发展论坛在北京举办
- (2023-04-14)每日热文:晟楠科技:研发人员数量近腰斩 开拓民品市场或“雷声大雨点小”
- (2023-04-14)山东鱼台:文旅融合点亮“诗与远方”
- (2023-04-14)酒店mpi是什么意思_什么是MPI通讯
- (2023-04-14)GAN卷土重来:10亿参数的GigaGAN效果堪比扩散模型_今日播报
- (2023-04-14)送给女孩的生日礼物手工,送给女生生日礼物最好是什么?
- (2023-04-14)锂电池板块强势吸金 相关指数基金日益交投活跃|今日聚焦
- (2023-04-14)清风头条丨凤凰:“责任田”里淬炼纪检监察铁军
- (2023-04-14)杭州:大专学历可落户市区 全面放开县域落户政策
- (2023-04-14)土耳其2月强震已致该国50500人遇难-热文
- (2023-04-14)全球即时看!主力复盘:20亿涌入能源金属 6亿封板北方华创
每日推荐
- ETF联接基金是什么意思?ETF基金和ETF联
- 货币基金的收益高吗?货币基金一般年收益
- 基金卖出了怎么还有收益显示?基金已经赎
- 投资的基金买了几天可以卖掉?基金入手多
- 基金终于回本了该不该赎回?基金终于回本
- 二月出境复飞航线超40条 节后部分机票价
- 重大事项变更!网易宝获批增加注册资本至
- 信达证券上市首日涨幅44%
- 总投资约486亿元 北京今年首批50个重大
- 新年北京首月二手住宅网签量再探底 价格
- 股价大涨 博云新材股东高创投拟趁机减持
- 2019华人歌曲音乐盛典在澳门举行
- 喜迎十九大•欢度中秋节—传统文化进社区
- 突发!吴敏霞夫妇挑婚戒被曝光!两百万钻
- 《钟山说事》 热点聚焦:胡鹏飞的最美乡
- 湖南御福天益生物公司被指涉嫌传销进行非
- 大同市城投公司刘建婷遭群众举报
- 鲁能集团 “一带一路”履责行动暨“海南
图片新闻
48小时频道点击排行
-
0
1GoJs的文本绘图模板TextBlock使用实 -
0
2每日热闻!二十一世纪出版社品牌介绍_ -
0
3香港dfs免税专柜-香港dfs免税店中文 -
0
4【快播报】中字头闻风而动,外资盯上 -
0
5环球新消息丨交流 | 大运河国际文 -
0
6心太平轩医案_时讯 -
0
7陕西跑友早早做好功课,带上老婆来场 -
0
8天天速递!如何备考会计中级财务管理 -
0
9马牙豆的吃法_如何挑选马牙大豆|热点 -
0
103月70城房价出炉:64城新房价格环比 -
0
11首届淮海经济区公积金十城联动宣传月 -
0
12观点:山西焦化(600740):4月14日 -
0
13【世界热闻】海特高新(002023):4 -
0
14全球微头条丨2023国际人才培养与发展 -
0
15山东鱼台:文旅融合点亮“诗与远方” -
0
16酒店mpi是什么意思_什么是MPI通讯 -
0
17GAN卷土重来:10亿参数的GigaGAN效果 -
0
18送给女孩的生日礼物手工,送给女生生 -
0
19清风头条丨凤凰:“责任田”里淬炼纪 -
0
202023年全国中小企业网上百日招聘高校