В исходных кодах часто встречается использование свойства 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.

Пример кода:

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);
},

Пример реализации метода:

initProperty: function(parameter) {
	var parameterName = parameter.name;
	this.set(parameterName, this.getParameterValue(parameter));
},

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

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