Prosedür, imzasını tanımlayan tüm referans yedekleme veri modellerini engeller. (ad, parametreler ve döndürülen sonuç). Search Ads 360'ın sağladığı veri modelleri @blockly/block-shareable-procedures eklentisi, Blockly'nin eski yerleşik prosedür bloklarının davranışını çoğaltın.
Bu, özel prosedürünüzde istemeyebileceğiniz bazı davranışları içerir engellemeler:
- İade türleri desteklenmiyor
- Tüm parametreler bir genel değişkenle ilişkilendirilir
Farklı bir davranış istiyorsanız kendi özel prosedür verilerinizi oluşturabilirsiniz modeller.
Prosedür modelini uygulama
Prosedür veri modelinizin IProcedureModel arayüzünün ekran görüntüsü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 modeliniz, IParameterModel arayüzü.
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 tümü,
Şuradan triggerProceduresUpdate
:
@blockly/block-shareable-procedures eklentisi. Bu,
tüm prosedür bloklarında doProcedureUpdate
yöntemini çağırarak bunların yeniden oluşturulmasına neden olun.
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
Bu dizindeki prosedür modelleri, @blockly/block-shareable-procedures eklentisi de etkinleşiyor gösterilen etkinliklerdir. Böylece birden fazla çalışma alanı ve prosedür modellerinin bunlar arasında paylaşılmasını sağlaması gerekir. Şunları da seçebilirsiniz: etkinlikleri tetikleyebilirsiniz.
Seriden çıkarma
Ayrıca sınıflarınızın her birinde, uygulamayı desteklemek için static loadState
yöntemi de gereklidir
seri durumdan çıkarma.
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...
}