attributes
initMethod
аттрибуты
Технические вопросы
7.x

Атрибуты - свойство initMethod ?

В исходных кодах часто встречается использование свойства initMethod, например

...
"Recommendation": {
        dataValueType: this.Terrasoft.DataValueType.MAPPING,
        type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
        caption: resources.localizableStrings.RecommendationCaption,
        initMethod: "initProperty",
        isRequired: false,
        doAutoSave: true
},
...

Но не совсем понятен смысл, и как его использовать в пользовательских атрибутах
(и можно ли вообще ?)
По идее этот метод должен вызываться при первичном инициализации значения аттрибута или нет ?

PS: Здравый смысл показывает что можно бы забиндить "value" атрибута на метод, для первичной инициализации - но

"value": {bindTo: "MyMethod"}

не приводит к вызову метода, и установке значения.
Я начал искать альтернативы и нашел вот этот initMethod, но сдается мне это тоже не то... установив для своих атрибутов initMethod он тоже так и не был вызван.

Нравится

1 комментарий

Здравствуйте!

Пример реализации и вызова функции указанного в атрибуте можете посмотреть в схеме ProcessFlowElementPropertiesPage.

Пример кода:
[javascript]
initParameters: function(element) {
this.initDesignerType();
Terrasoft.each(this.columns, function(columnConfig, columnName) {
if (columnConfig.initMethod) {
var parameter = element.findParameterByName(columnName);
this[columnConfig.initMethod](parameter);
}
}, this);
},
[/javascript]

Пример реализации метода:
[javascript]
initProperty: function(parameter) {
var parameterName = parameter.name;
this.set(parameterName, this.getParameterValue(parameter));
},
[/javascript]

Метод initParameters вызовется в момент создании экземпляра схемы/модуля.

Показать все комментарии