Исходные данные JS-кода.
Атрибут.
"ArticleName": {
"dataValueType": this.Terrasoft.DataValueType.TEXT,
"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
"value": ""
},
Метод получения значения атрибута
getArticleName: function() {
var articleName = this.get("ArticleName");
return articleName ? articleName : "";
},
Метод кнопки
onGetArticleNameClick: function () {
// Первый запуск - <пусто>
// Последующие запуски - <наименование>
this.showInformationDialog(this.getArticleName());
this.set("ArticleName", "");
// Данные реестра.
var gridData = this.getGridData();
if (gridData) {
var activeRow = this.getActiveRow();
if (activeRow) {
// Поле Id.
var activeRowId = activeRow.get("Id");
if (activeRowId)
{
var serviceData = { id: activeRowId };
ServiceHelper.callService("VSKBSourceCodeServices", "GetArticleName",
function (response) {
var result = response.GetArticleNameResult;
this.set("ArticleName", result);
}, serviceData, this);
}
}
}
// Всегда <пусто>
this.showInformationDialog(this.getArticleName());
},
Не могу понять, почему ServiceHelper.callService не заполняет значение атрибута ArticleName сразу? Ощущение, как будто вызов клиентского веб-сервиса GetArticleName выполняется асинхронно.