Yordam, yordamın imzasını (ad, parametreler ve dönüş) tanımlayan tüm referans destekleme veri modellerini engeller. @blockly/block-shareable-procedures eklentisi tarafından sağlanan veri modelleri, Blockly'nin eski yerleşik prosedür bloklarının davranışını kopyalamak için oluşturulmuştur.
Bu, özel prosedür bloklarınızda istemeyebileceğiniz bazı davranışları içerir. Örneğin:
- İade türleri desteklenmiyor
- Tüm parametreler bir global değişkenle ilişkilendirilir.
Farklı bir davranış istiyorsanız kendi özel prosedür verisi modellerinizi oluşturabilirsiniz.
Prosedür modeli uygulama
Prosedür veri modeliniz, IProcedureModel
arayüzünü uygulamalıdır.
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...
}
Parametre modeli uygulaması
Parametre veri modelinizin IParameterModel
arayüzünü uygulaması gerekir.
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...
}
Tetikleyici değişiklikleri
Prosedür modelinde değişiklikleri tetikleyen yöntemlerin, @blockly/block-shareable-procedures eklentisinden triggerProceduresUpdate
işlevini de çağırması gerekir. Bu işlem, tüm prosedür bloklarında doProcedureUpdate
işlevini çağırarak blokların yeniden oluşturulmasına neden olur.
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...
}
Etkinlikler
@blockly/block-shareable-procedures eklentisindeki prosedür modelleri, prosedürler değiştirildiğinde de etkinlikleri tetikler. Bu sayede birden fazla çalışma alanı senkronize edilebilir ve prosedür modelleri bu alanlar arasında paylaşılabilir. İsterseniz etkinlikleri tetiklemeyi de seçebilirsiniz.
Seri durumdan çıkarma
Sınıflarınızın her birinde de seri durumdan çıkarma işlemini desteklemek için static loadState
yöntemi bulunmalıdır.
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...
}