目錄
前言TextBlock的使用TextBlock的配置屬性節(jié)點(diǎn)內(nèi)文本的雙擊編輯前言
文接上回,我們已經(jīng)使用gojs
實(shí)現(xiàn)了一個(gè)最最最基本的樹形布局。這次我們開始對圖形的骨架進(jìn)行一個(gè)內(nèi)容展示上的豐富和顯示風(fēng)格上的美化??梢哉f我們圖形的節(jié)點(diǎn)部分是我們整個(gè)圖形大部分信息的一個(gè)展示載體。而我們的需求當(dāng)中,為了使一些信息更加形象,醒目。我們會用到文本,圖標(biāo),圖片,和節(jié)點(diǎn)的背景的顏色等等來顯示不同類型的節(jié)點(diǎn)。
TextBlock的使用
本次的介紹便是通過TextBlock
的屬性來控制節(jié)點(diǎn)內(nèi)的文本顯示內(nèi)容和一些樣式的修改,對我們的關(guān)系圖進(jìn)行進(jìn)一步的豐富。首先我們先準(zhǔn)備一些數(shù)據(jù)
(資料圖片)
nodes: [ { key: "1", text: "三國人物志", nodeBs: "root", }, { key: "1-1", text: "曹操", nodeBs: "cc", }, { key: "1-2", text: "劉備", nodeBs: "lb", }, { key: "1-3", text: "孫權(quán)", nodeBs: "sq", }, ], links: [ { from: "1", to: "1-1", }, { from: "1", to: "1-2", }, { from: "1", to: "1-3", }, ],
其中nodes
中的key
字段為節(jié)點(diǎn)的唯一標(biāo)識,為必須。而text
字段則是我們希望顯示到節(jié)點(diǎn)上的內(nèi)容,nodeBs
主要是一個(gè)節(jié)點(diǎn)的標(biāo)識,方便批量處理一些節(jié)點(diǎn)的時(shí)候進(jìn)行判斷。links
中存放的為必須的from(起點(diǎn))和to(終點(diǎn))字段。
this.myDiagram = $$(go.Diagram, "myDiagramDiv", { layout: $$(go.TreeLayout),//在初始化時(shí)畫布的布局方式 }); this.myDiagram.nodeTemplate = $$( go.Node, //節(jié)點(diǎn)的node配置項(xiàng) "Horizontal", //節(jié)點(diǎn)內(nèi)部的布局方式 $$( go.TextBlock,//指定為gojs規(guī)定的文本顯示形式 new go.Binding("text", "text") //將我們的text字段顯示到節(jié)點(diǎn)中 ) ) this.myDiagram.model = new go.GraphLinksModel(this.nodes, this.links);
在這里我們可以看一下,通過我們實(shí)例化之后的nodeTemplate
屬性來實(shí)現(xiàn)我們的node
的模板進(jìn)行一個(gè)自定義的填充內(nèi)容,來實(shí)現(xiàn)節(jié)點(diǎn)內(nèi)部不同內(nèi)容的顯示。其中go.Node
是固定搭配,就是我們是對node
模板進(jìn)行一個(gè)配置,然后就需要我們我們的操作對象為node
,然后再內(nèi)部嵌套各種其他的模板。Horizontal
是節(jié)點(diǎn)內(nèi)部的一種布局方式,這個(gè)我們后面會統(tǒng)一進(jìn)行分析。
當(dāng)然你也可以寫成這種形式
this.myDiagram.nodeTemplate = new go.Node().add(new go.TextBlock().bind("text"));
因?yàn)榈谝环N的寫法比較清晰,因此我們主要是采用第一種方式進(jìn)行節(jié)點(diǎn)內(nèi)的布局填充,這樣我們就得到了這樣一個(gè)圖形
TextBlock的配置屬性
在這里對顯示的文字修改一下樣式,這里列舉一些常用的屬性
$$( go.TextBlock,//指定為gojs規(guī)定的文本顯示形式 { stroke: "red",//設(shè)置字體顏色,默認(rèn)為黑色 background:"yellow",//字體的背景顏色,默認(rèn)透明 font: "14px,sans-serif ",//字體的名稱,大小,是否加粗等 margin:8,//類似css,外邊距 width:20,//寬度 height:20,//高度 textAlign:"left",//文本的對齊方式,有l(wèi)eft,center,right三種屬性 alignment:go.Spot.Left, // 文本在父級結(jié)構(gòu)中的對齊方式,有g(shù)o.Spot.Left,go.Spot.Center,go.Spot.Right三種屬性 minSize: new go.Size(10, 14),//文本的最小尺寸,兩個(gè)參數(shù)分別為寬和高 maxSize: new go.Size(NaN, NaN), //文本的最大寬度,如果我們設(shè)置為NaN,其尺寸會進(jìn)行自適應(yīng) overflow: go.TextBlock.OverflowClip,//文本溢出寬度之后的顯示方式,OverflowClip為換行.OverflowEllipsis是顯示省略號 maxLines: 2,//換行之后最多顯示幾行 verticalAlignment:"Top"http://垂直方向上的的對齊方式,有Top,Center,Bottom三種屬性 }, )
既然textAlign
和alignment
都是文本的對齊方式,那他們之間有什么區(qū)別呢?我們把節(jié)點(diǎn)單獨(dú)給拿出來,然后分別對添加這兩種屬性的三個(gè)參數(shù)值進(jìn)行對比一下。
$$(go.Panel, "Vertical",{width:300,background:"#67B73C"},//父級模板,相當(dāng)于外層html標(biāo)簽,然后我們給外層標(biāo)簽一個(gè)寬度 $$(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}) ),
我們在外層增加一個(gè)模板并且添加寬度之后,分別在內(nèi)層的文本標(biāo)簽設(shè)置不同的屬性和屬性值,顯示內(nèi)容可以知道。textAlign
屬性是如果設(shè)置了文本區(qū)域的寬度,在文本顯示區(qū)域內(nèi)部居左、居中、居右顯示。而alignment
屬性則是以文本區(qū)域?yàn)橐粋€(gè)整體,全部內(nèi)容在父級模板中的相對位置居左、居中、居右。
然后我們看一下overflow
的兩種文本溢出方式的區(qū)別
$$(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}), ),
由此我們可以發(fā)現(xiàn)overflow
的兩種屬性go.TextBlock.OverflowClip
和go.TextBlock.OverflowEllipsis
在單獨(dú)設(shè)置的時(shí)候是和默認(rèn)效果沒有區(qū)別的,都是會默認(rèn)進(jìn)行一個(gè)換行。而如果我們再加上行數(shù)的限制maxLines: 2
之后就出現(xiàn)了區(qū)別go.TextBlock.OverflowClip
屬性是和默認(rèn)情況是一樣的,會對我們的文本進(jìn)行一個(gè)整詞切割,而go.TextBlock.OverflowEllipsis
則是出現(xiàn)了超出部門內(nèi)容顯示...,因此在開發(fā)過程中我們可以可以對超長文本進(jìn)行go.TextBlock.OverflowEllipsis
屬性和maxLines
的結(jié)合使用,保證項(xiàng)目中的的節(jié)點(diǎn)的規(guī)格不至于過長而導(dǎo)致圖形的顯示冗余。
節(jié)點(diǎn)內(nèi)文本的雙擊編輯
gojs還為我們提供了editable
屬性,可以在節(jié)點(diǎn)內(nèi)直接雙擊出現(xiàn)的輸入框?qū)ξ覀兊墓?jié)點(diǎn)內(nèi)的文本顯示進(jìn)行一個(gè)編輯,在編輯完成之后,只需要點(diǎn)擊畫布就可以把編輯后的內(nèi)容顯示到節(jié)點(diǎn)之中。
$$( go.TextBlock, { editable:true,//是否開啟雙擊編輯節(jié)點(diǎn)內(nèi)部文本功能 textEdited: function (tb, olds, news) {//編輯文本成功之后的回調(diào)函數(shù) console.log(tb.part.data,olds,news) } }, new go.Binding("text", "text") ),
在節(jié)點(diǎn)的文本框雙擊之后就可以出現(xiàn)一個(gè)輸入框的彈出,可以輸入新的內(nèi)容之后點(diǎn)擊畫布,然后在編輯成功之后的回調(diào)函數(shù)textEdited
分別有三個(gè)參數(shù),我們可以通過第一個(gè)參數(shù)的tb.part.data
來獲取我們操作的節(jié)點(diǎn)的全部數(shù)據(jù),而第二個(gè)參數(shù)則是編輯之前的內(nèi)容(也就是我們示例中的曹操),而第三個(gè)參數(shù)則是我們編輯之后的內(nèi)容(也就是我們示例中的曹操阿瞞)。因此我們可以通過獲取之后的新值來更改我們的數(shù)據(jù)來保證數(shù)據(jù)和圖中內(nèi)容對應(yīng)。
以上就是GoJs的文本繪圖模板TextBlock使用實(shí)例的詳細(xì)內(nèi)容,更多關(guān)于GoJs TextBlock文本繪圖模板的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)推薦
- (2023-04-16)GoJs的文本繪圖模板TextBlock使用實(shí)例-今日視點(diǎn)
- (2023-04-16)每日熱聞!二十一世紀(jì)出版社品牌介紹_二十一世紀(jì)出版社
- (2023-04-15)榮獲“河南省省長質(zhì)量獎(jiǎng)”,仰韶交出“高質(zhì)量”答卷!
- (2023-04-15)瑞納智能實(shí)控人控制企業(yè)隱而未披 財(cái)務(wù)總監(jiān)曾在外專職或“踩線”-世界時(shí)快訊
- (2023-04-15)香港dfs免稅專柜-香港dfs免稅店中文官網(wǎng)
- (2023-04-15)9月國內(nèi)光伏硅料產(chǎn)量為7.62萬噸 環(huán)比增長23% 每日焦點(diǎn)
- (2023-04-15)【快播報(bào)】中字頭聞風(fēng)而動(dòng),外資盯上這5家,誰會成為領(lǐng)頭羊
- (2023-04-15)環(huán)球新消息丨交流 | 大運(yùn)河國際文化交流中心調(diào)研座談會在什剎海召開 孫碩強(qiáng)調(diào):要以中國大運(yùn)河世界遺產(chǎn)北端點(diǎn)什剎海為依托,挖掘運(yùn)河文化內(nèi)涵,講好中國故事
- (2023-04-15)心太平軒醫(yī)案_時(shí)訊
- (2023-04-15)陜西跑友早早做好功課,帶上老婆來場“武漢漢馬游”_天天熱資訊
- (2023-04-15)財(cái)報(bào)解讀 | 微創(chuàng)光電:應(yīng)收款反超營收賒銷加劇 行業(yè)競爭激烈市占率不足1%
- (2023-04-15)天天速遞!如何備考會計(jì)中級財(cái)務(wù)管理
- (2023-04-15)馬牙豆的吃法_如何挑選馬牙大豆|熱點(diǎn)聚焦
- (2023-04-15)3月70城房價(jià)出爐:64城新房價(jià)格環(huán)比上漲 武漢、昆明領(lǐng)漲
- (2023-04-15)環(huán)球觀速訊丨美聯(lián)儲縮債政策加速落地 黃金市場進(jìn)入反彈窗口
- (2023-04-15)新資訊:華密新材獨(dú)董及核心技術(shù)人員履歷現(xiàn)兩個(gè)版本 信披質(zhì)量或打折
- (2023-04-15)首屆淮海經(jīng)濟(jì)區(qū)公積金十城聯(lián)動(dòng)宣傳月活動(dòng)展開 頭條焦點(diǎn)
- (2023-04-15)觀點(diǎn):山西焦化(600740):4月14日北向資金減持31.04萬股
- (2023-04-15)【世界熱聞】海特高新(002023):4月14日北向資金增持20.08萬股
- (2023-04-15)全球微頭條丨2023國際人才培養(yǎng)與發(fā)展論壇在北京舉辦
- (2023-04-14)每日熱文:晟楠科技:研發(fā)人員數(shù)量近腰斬 開拓民品市場或“雷聲大雨點(diǎn)小”
- (2023-04-14)山東魚臺:文旅融合點(diǎn)亮“詩與遠(yuǎn)方”
- (2023-04-14)酒店mpi是什么意思_什么是MPI通訊
- (2023-04-14)GAN卷土重來:10億參數(shù)的GigaGAN效果堪比擴(kuò)散模型_今日播報(bào)
- (2023-04-14)送給女孩的生日禮物手工,送給女生生日禮物最好是什么?
- (2023-04-14)鋰電池板塊強(qiáng)勢吸金 相關(guān)指數(shù)基金日益交投活躍|今日聚焦
- (2023-04-14)清風(fēng)頭條丨鳳凰:“責(zé)任田”里淬煉紀(jì)檢監(jiān)察鐵軍
- (2023-04-14)杭州:大專學(xué)歷可落戶市區(qū) 全面放開縣域落戶政策
- (2023-04-14)土耳其2月強(qiáng)震已致該國50500人遇難-熱文
- (2023-04-14)全球即時(shí)看!主力復(fù)盤:20億涌入能源金屬 6億封板北方華創(chuàng)
每日推薦
- ETF聯(lián)接基金是什么意思?ETF基金和ETF聯(lián)
- 貨幣基金的收益高嗎?貨幣基金一般年收益
- 基金賣出了怎么還有收益顯示?基金已經(jīng)贖
- 投資的基金買了幾天可以賣掉?基金入手多
- 基金終于回本了該不該贖回?基金終于回本
- 二月出境復(fù)飛航線超40條 節(jié)后部分機(jī)票價(jià)
- 重大事項(xiàng)變更!網(wǎng)易寶獲批增加注冊資本至
- 信達(dá)證券上市首日漲幅44%
- 總投資約486億元 北京今年首批50個(gè)重大
- 新年北京首月二手住宅網(wǎng)簽量再探底 價(jià)格
- 股價(jià)大漲 博云新材股東高創(chuàng)投擬趁機(jī)減持
- 2019華人歌曲音樂盛典在澳門舉行
- 喜迎十九大?歡度中秋節(jié)—傳統(tǒng)文化進(jìn)社區(qū)
- 突發(fā)!吳敏霞夫婦挑婚戒被曝光!兩百萬鉆
- 《鐘山說事》 熱點(diǎn)聚焦:胡鵬飛的最美鄉(xiāng)
- 湖南御福天益生物公司被指涉嫌傳銷進(jìn)行非
- 大同市城投公司劉建婷遭群眾舉報(bào)
- 魯能集團(tuán) “一帶一路”履責(zé)行動(dòng)暨“海南
圖片新聞
48小時(shí)頻道點(diǎn)擊排行
-
0
1GoJs的文本繪圖模板TextBlock使用實(shí) -
0
2每日熱聞!二十一世紀(jì)出版社品牌介紹_ -
0
3香港dfs免稅專柜-香港dfs免稅店中文 -
0
4【快播報(bào)】中字頭聞風(fēng)而動(dòng),外資盯上 -
0
5環(huán)球新消息丨交流 | 大運(yùn)河國際文 -
0
6心太平軒醫(yī)案_時(shí)訊 -
0
7陜西跑友早早做好功課,帶上老婆來場 -
0
8天天速遞!如何備考會計(jì)中級財(cái)務(wù)管理 -
0
9馬牙豆的吃法_如何挑選馬牙大豆|熱點(diǎn) -
0
103月70城房價(jià)出爐:64城新房價(jià)格環(huán)比 -
0
11首屆淮海經(jīng)濟(jì)區(qū)公積金十城聯(lián)動(dòng)宣傳月 -
0
12觀點(diǎn):山西焦化(600740):4月14日 -
0
13【世界熱聞】海特高新(002023):4 -
0
14全球微頭條丨2023國際人才培養(yǎng)與發(fā)展 -
0
15山東魚臺:文旅融合點(diǎn)亮“詩與遠(yuǎn)方” -
0
16酒店mpi是什么意思_什么是MPI通訊 -
0
17GAN卷土重來:10億參數(shù)的GigaGAN效果 -
0
18送給女孩的生日禮物手工,送給女生生 -
0
19清風(fēng)頭條丨鳳凰:“責(zé)任田”里淬煉紀(jì) -
0
202023年全國中小企業(yè)網(wǎng)上百日招聘高校