最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

GoJs中使用HTML方法示例

 更新時(shí)間:2023年05月05日 10:25:15   作者:沅芷湘蘭  
這篇文章主要為大家介紹了GoJs中使用HTML方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

gojs中因?yàn)橛凶约旱睦L圖模板和一些語法限制,實(shí)際上都是在canvas標(biāo)簽的特性上進(jìn)行的封裝。但是有些時(shí)候其拓展就不能滿足需求的時(shí)候,可以對(duì)其和html結(jié)構(gòu)進(jìn)行一些交互,達(dá)到自己顯示上的特殊需求的展示。

使用html的方式

本文將從提示信息、右鍵菜單、和文本編輯三個(gè)方面來體現(xiàn)gojshtml之間的交互。而對(duì)于html的使用交互過程中,最主要考慮到的就是html信息何時(shí)展示,何時(shí)隱藏.展示的時(shí)候展示到什么位置。而觸發(fā)的這個(gè)在gojs中是HTMLInfoshowhide屬性。給showhide綁定對(duì)應(yīng)的回調(diào)函數(shù)。

提示信息的html交互

在前面的文章中提到過提示信息的展示(toolTip),并且講到了toolTip內(nèi)部的不同繪圖模板的的自定義類型。但是很多時(shí)候還是無法滿足一些特殊的展示的樣式,因此可以使用html渲染之后動(dòng)態(tài)展示因此就可以了。使用方法如下

//data
nodes: [
    { key: "1", color: "#99FFFF", text: "三國", figure: "Rectangle" },
    { key: "1-1", color: "#FF0000", text: "魏", figure: "Circle" },
    { key: "1-2", color: "#FFFF66", text: "蜀", figure: "Circle" },
    { key: "1-3", color: "#0000FF", text: "吳", figure: "Circle" },
],
links: [
    {
      from: "1",
      to: "1-1",
    },
    {
      from: "1",
      to: "1-2",
    },
    {
      from: "1",
      to: "1-3",
    },
],
//methods
this.myDiagram.nodeTemplate = $$(
go.Node,
"Vertical",
{
    toolTip: myToolTip
},
$$(
  go.Shape,
  "Circle",
  { width: 30, height: 30, name: "ICON" },
  // new go.AnimationTrigger('stroke'),
  new go.Binding("fill", "color"),
  new go.Binding("figure", "figure")
),
$$(go.TextBlock, new go.Binding("text", "text"))
);
showToolTip(obj, diagram) {
    let toolTipDIV = document.getElementById('toolTipDIV');
    let pt = diagram.lastInput.viewPoint;
    toolTipDIV.style.left = (pt.x + 10) + "px";
    toolTipDIV.style.top = (pt.y + 10) + "px";
    document.getElementById('toolTipParagraph').textContent = "此節(jié)點(diǎn)的key為" + obj.data.key;
    toolTipDIV.style.display = "block";
},
hideToolTip(diagram) {
    let toolTipDIV = document.getElementById('toolTipDIV');
    toolTipDIV.style.display = "none";
}

show的回調(diào)函數(shù)showToolTip的兩個(gè)參數(shù),第一個(gè)是obj,通過obj.data可以獲取到對(duì)應(yīng)鼠標(biāo)移入的節(jié)點(diǎn)數(shù)據(jù)。第二個(gè)參數(shù)為diagram,前面的文章中我們提到過,可以通過diagram.lastInput.viewPoint獲取到鼠標(biāo)觸發(fā)該回調(diào)函數(shù)時(shí)候的位置對(duì)象數(shù)據(jù),其內(nèi)部為x,y屬性。然后給該位置一個(gè)偏移量顯示提示信息,就可以保證在鼠標(biāo)的旁邊展示。

右鍵菜單的html交互

右鍵菜單和html的交互和提示信息的相似,都是通過綁定方法來控制位置的顯示和隱藏。因此我們把contextMenu也配置成myToolTip。示例如下

{
    toolTip: myToolTip,
    contextMenu:myToolTip
}

由上圖可以看出在鼠標(biāo)移出或者右鍵點(diǎn)擊都可以觸發(fā)提示信息,但是不同的是提示信息有默認(rèn)顯示的時(shí)間,并且會(huì)自動(dòng)消失。但是右鍵點(diǎn)擊的時(shí)候因?yàn)闆]有觸發(fā)hideToolTip回調(diào)函數(shù),因此不會(huì)自動(dòng)消失,需要點(diǎn)擊畫布才能把提示消息顯示消失。

文本編輯的html交互

文本編輯的交互和提示信息略有不同。因?yàn)槭俏谋揪庉?所以必須是輸入框類型的,但是還可以選select選擇器進(jìn)行有選項(xiàng)的編輯。下面以select為例,可以選擇所有節(jié)點(diǎn)的text信息。其示例代碼如下

let customEditor = new go.HTMLInfo();
let customSelectBox = document.createElement("select");
customEditor.show = function(textBlock, diagram, tool) {
if (!(textBlock instanceof go.TextBlock)) return;
customSelectBox.innerHTML = "";
let list = ['三國','魏','蜀','吳'];
for (let i = 0; i < list.length; i++) {
    let op = document.createElement("option");
    op.text = list[i];
    op.value = list[i];
    customSelectBox.add(op, null);
}
customSelectBox.value = textBlock.text;
customSelectBox.addEventListener("keydown", function(e) {
    var keynum = e.which;
    if (keynum == 13) { 
    tool.acceptText(go.TextEditingTool.Enter);
    return;
    } else if (keynum == 9) { 
    tool.acceptText(go.TextEditingTool.Tab);
    e.preventDefault();
    return false;
    } else if (keynum === 27) { 
    tool.doCancel();
    if (tool.diagram) tool.diagram.focus();
    }
}, false);
let loc = textBlock.getDocumentPoint(go.Spot.TopLeft);
let pos = _this.myDiagram.transformDocToView(loc);
customSelectBox.style.left = pos.x + "px";
customSelectBox.style.top  = pos.y+ 30 + "px";
customSelectBox.style.position = 'absolute';
customSelectBox.style.zIndex = 100; 
_this.myDiagram.div.appendChild(customSelectBox);
}
customEditor.hide = function(diagram, tool) {
    diagram.div.removeChild(customSelectBox);
}
customEditor.valueFunction = function() { return customSelectBox.value; }
this.myDiagram.toolManager.textEditingTool.defaultTextEditor = customEditor;

文本編輯的交互首先需要對(duì)new go.HTMLInfo()進(jìn)行一個(gè)實(shí)例化,和上面一樣也是通過show方法和hide方法進(jìn)行一個(gè)顯示隱藏的操作。然后通過go.Spot.TopLeft獲取點(diǎn)擊文本的左上角的位置。然后給創(chuàng)建的select定位一個(gè)相對(duì)的位置。然后通過new go.HTMLInfo()valueFunction方法把select選中的option的值賦給編輯的文本TextBlock。從而實(shí)現(xiàn)一個(gè)文本編輯選擇的過程。

總結(jié)

在很多時(shí)候。有canvas拓展封裝的gojs無法滿足提示信息的樣式或者用html實(shí)現(xiàn)起來更加簡單,可以用gojshtml的交互來實(shí)現(xiàn),gojs是通過JavaScript來控制html元素的顯示隱藏和顯示的位置。

以上就是GoJs中使用HTML方法示例的詳細(xì)內(nèi)容,更多關(guān)于GoJs使用HTML的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JavaScript腳本實(shí)現(xiàn)解析MyBatis?SQL日志

    JavaScript腳本實(shí)現(xiàn)解析MyBatis?SQL日志

    這篇文章主要為大家詳細(xì)介紹了如何開發(fā)一個(gè)簡單的?HTML?和?JavaScript?腳本,用于解析?MyBatis?的?SQL?日志并生成可執(zhí)行的?SQL?語句,需要的可以參考下
    2025-02-02
  • 詳解JavaScript中l(wèi)ocalStorage使用要點(diǎn)

    詳解JavaScript中l(wèi)ocalStorage使用要點(diǎn)

    localStorage主要用來替代cookie,解決cookie(可參考cookie使用要點(diǎn))讀寫困難、容量有限的問題,對(duì)js localstorage的使用相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • 你必須了解的JavaScript中的屬性描述對(duì)象詳解(下)

    你必須了解的JavaScript中的屬性描述對(duì)象詳解(下)

    JavaScript提供了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),用來描述對(duì)象的屬性,控制它的行為,比如該屬性是否可寫、可遍歷等等。這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)稱為“屬性描述對(duì)象”。本文主要帶大家了解一下JavaScript中你必須了解的屬性描述對(duì)象,需要的可以參考一下
    2022-12-12
  • 用JavaScript實(shí)現(xiàn)讓瀏覽器停止載入頁面的方法

    用JavaScript實(shí)現(xiàn)讓瀏覽器停止載入頁面的方法

    下面小編就為大家?guī)硪黄肑avaScript實(shí)現(xiàn)讓瀏覽器停止載入頁面的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • 實(shí)用Javascript調(diào)試技巧分享(小結(jié))

    實(shí)用Javascript調(diào)試技巧分享(小結(jié))

    這篇文章主要介紹了實(shí)用Javascript調(diào)試技巧分享(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-06-06
  • js中的this關(guān)鍵字詳解

    js中的this關(guān)鍵字詳解

    this是Javascript語言的一個(gè)關(guān)鍵字它代表函數(shù)運(yùn)行時(shí),自動(dòng)生成的一個(gè)內(nèi)部對(duì)象,只能在函數(shù)內(nèi)部使用,下面分四種情況,詳細(xì)討論this的用法,感興趣的朋友可以了解下
    2013-09-09
  • JS百度地圖搜索懸浮窗功能

    JS百度地圖搜索懸浮窗功能

    這篇文章主要為大家詳細(xì)介紹了JS百度地圖搜索懸浮窗功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • js使用ajax傳值給后臺(tái),后臺(tái)返回字符串處理方法

    js使用ajax傳值給后臺(tái),后臺(tái)返回字符串處理方法

    今天小編就為大家分享一篇js使用ajax傳值給后臺(tái),后臺(tái)返回字符串處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 理解javascript中Map代替循環(huán)

    理解javascript中Map代替循環(huán)

    這篇文章主要幫助大家理解javascript中Map代替循環(huán),感興趣的小伙伴們可以參考一下
    2016-02-02
  • js 設(shè)置css的定位

    js 設(shè)置css的定位

    css的定位設(shè)置代碼
    2008-12-12

最新評(píng)論

灌阳县| 高要市| 东方市| 和平区| 台东县| 思南县| 项城市| 翁牛特旗| 沙湾县| 新郑市| 杭锦后旗| 临泽县| 云梦县| 枞阳县| 吉木萨尔县| 荆州市| 道真| 许昌市| 略阳县| 右玉县| 顺昌县| 台湾省| 定州市| 汶上县| 昌邑市| 普安县| 雷波县| 眉山市| 乐山市| 凤山县| 莒南县| 斗六市| 香格里拉县| 四会市| 竹北市| 荔浦县| 麦盖提县| 五大连池市| 松滋市| 治多县| 枞阳县|