一、监听数据
监听节点1的数据是否改变,如果改变,节点2也要跟着改变。
注意:如果修改数据的时候使用了{ overwrite: true },则会监听不到数据的改变,因为overwrite: true表示覆盖,就没有了之前的记录,也就监听不到数据的改变了。
节点1
input () {
this.node.setData({
nodedatas: {
inputList: this.startform.list,
outputList: this.startform.list,
indexnum: this.indexnum,
},
}); // 将数据保存到节点数据中
},
节点2
mounted () {
this.node = this.getNode(); //当前节点
this.getGraph1 = this.getGraph(); //Graph实例
this.nodeData = this.node.store.data.data.nodedatas; //节点信息赋值
// this.title = this.node.store.data.label;
this.title = this.generatenode(this.node);
this.Llmform.list = this.nodeData.inputList; //赋值页面数据,输入
this.outform.list = this.nodeData.outputList; //赋值页面数据,输出
this.ruleForm.tishi = this.nodeData.tishi; //赋值页面数据,输出
this.indexnum = this.nodeData.indexnum; //输入每一个参数唯一的标志
this.select();
this.$nextTick(() => {
this.getsize();
});
// 监听外部修改本节点数据
this.getGraph1.on("node:change:data", (cell) => {
if (
cell.node.shape === "start-node" ||
cell.node.shape === "llmTongyi-node" ||
cell.node.shape === "code-node"
) {
// 开始节点的数据
let startnode = cell.node.store.data.data.nodedatas.outputList;
let startID = cell.node.id;
this.getGraph1.getNodes().forEach((node) => {
if (node.shape === "llmTongyi-node") {
// 页面有多个code-node,代码引用另一个代码,则正在修改该的代码不能修改
if (startID !== this.node.id) {
this.select();
if (this.Llmform.list.length > 0) {
startnode.forEach((i) => {
this.Llmform.list.forEach((j, ind) => {
if (j.value) {
let a = j.value.substr(1);
let b = a.substring(0, a.length - 1).split(",");
if (b[0] === startID && i.index === j.index) {
// j.parameter_type = i.parameter_type;
j.description = i.parameter_name;
let c = JSON.parse(j.customfields);
c[1] = i.parameter_name;
j.customfields = JSON.stringify(c);
j.relDesc = JSON.parse(j.customfields)
b[2] = i.parameter_name;
j.value = "[" + b + "]";
}
}
});
});
}
this.node.setData({
nodedatas: {
inputList: this.Llmform.list,
outputList: this.outform.list,
tishi: this.ruleForm.tishi,
indexnum: this.indexnum,
},
}); // 将数据保存到节点数据中
}
}
});
}
});
},