您必须声明如何将 xml 加载到 dom,以及如何将其保存到 xml 并重绘。还要注意它是如何将 mutator 附加到块元素的,以防这是您需要引用已经存在的 mutator 的唯一部分。
init: initFunction (Like you have declared.)
mutationToDom: MutationToDom,
domToMutation: DomToMutation,
updateShape_: UpdateShape`
如果您只需要创建对 mutator 的引用,那么您需要的是这种类型的元素,我们稍后将以编程方式创建它:
<mutation mutator_name="true"></mutation>
以下代码片段是额外函数mutationToDom、DomtoMutation UpdateShape 的示例,它有条件地附加额外输入。我有一个带有复选框的块,启用后会添加一个额外的输入。
function MutationToDom() {
var container = document.createElement('mutation');
var continueOnError = (this.getFieldValue('HasCONTINUE') == 'TRUE');
container.setAttribute('continueOnError', continueOnError);
return container;
}
function DomToMutation(xmlElement) {
var continueOnError = (xmlElement.getAttribute('continueOnError') == 'true');
this.updateShape_(continueOnError);
}
function UpdateShape(continueOnError) {
// Add or remove a Value Input.
if (continueOnError) {
this.appendValueInput("CONTINUE_ON_ERROR")
.setCheck('CONTINUE_ON_ERROR');
} else {
if (this.childBlocks_.length > 0) {
for (var i = 0; i < this.childBlocks_.length; i++) {
if (this.childBlocks_[i].type == 'continue_on_error') {
this.childBlocks_[i].unplug();
break;
}
}
}
this.removeInput('CONTINUE_ON_ERROR');
}
}