La procedura blocca tutti i modelli dei dati di supporto di riferimento che definiscono la firma la procedura (nome, parametri e invio). I modelli di dati forniti Il plug-in @blockly/block-shareable-procedures è progettato per replicare il comportamento dei blocchi delle procedure integrate legacy di Blockly.
Sono inclusi alcuni comportamenti indesiderati per la procedura personalizzata. blocchi, tra cui:
- I tipi di reso non sono supportati
- Tutti i parametri sono associati a una variabile globale
Se vuoi un comportamento diverso, puoi creare i tuoi dati di procedura personalizzata di grandi dimensioni.
Implementazione del modello di procedura
Il modello dei dati della procedura deve implementare Interfaccia IProcedureModel.
class MyProcedureModel {
constructor(workspace, name, id) {
this.workspace = workspace;
this.name = name;
this.id = id;
// Note: construction should not add the model to the procedure map.
},
// Other methods are omitted for brevity...
}
Implementazione del modello di parametri
Il modello di dati dei parametri deve implementare il parametro Interfaccia IParameterModel.
class MyParameterModel {
constructor(workspace, name, id) {
this.workspace = workspace;
this.name = name;
this.id = id;
},
setProcedureModel(model) {
this.model = model;
return this;
}
// Other methods are omitted for brevity...
}
Attiva modifiche
Anche tutti i metodi che attivano le modifiche al modello di procedura devono chiamare
triggerProceduresUpdate
da
Plug-in @blockly/block-shareable-procedures. In questo modo
chiamare doProcedureUpdate
su qualsiasi blocco di procedura, causandone il rendering.
import {triggerProceduresUpdate} from '@blockly/block-shareable-procedures';
class MyProcedureModel {
setName(name) {
this.name = name;
triggerProcedureUpdate();
return this;
}
// Other methods are omitted for brevity...
}
class MyParameterModel {
setName(name) {
this.name = name;
triggerProcedureUpdate();
return this;
}
// Other methods are omitted for brevity...
}
Eventi
I modelli di procedura Viene attivato anche il plug-in @blockly/block-shareable-procedures degli eventi quando le procedure vengono modificate. In questo modo, più aree di lavoro sincronizzati e i modelli di procedura da condividere tra di loro. Puoi anche scegliere per attivare eventi.
Deserializzazione
Inoltre, ciascuno dei tuoi corsi deve avere un metodo static loadState
a scopo di supporto
la deserializzazione.
class MyProcedureModel {
static loadState(state, workspace) {
// Note that the procedure model should not deserialize parameters.
// The deserializer will handle that.
return new MyProcedureModel(workspace, state.name, state.id);
}
// Other methods are omitted for brevity...
}
class MyParameterModel {
static loadState(state, workspace) {
return new MyParameterModel(workspace, state.name, state.id);
}
// Other methods are omitted for brevity...
}