Terrasoft.controls.mixins.Bindable.callModelMethod

На странице карточки эксперимента есть несколько справочников. После сохранения выбранных значений справочников я хочу при последующих открытиях карточки показать кнопку. 

 

Логика Terrasoft.controls.mixins.Bindable.callModelMethod вызывает привязанный метод ExperimentVisibility к элементу страницы из раздела diff в параметре bindTo

 

{
  "operation": "merge",
  "name": "ConsumptionDetailcc99e44c",
  "values": {
     "visible": {
        "bindTo": "ExperimentVisibility"
     }
  }
},

Метод ExperimentVisibility проверяет установлено ли значение в схеме объекта страницы. На момент когда Bindable.callModelMethod вызывается, данные схемы объекта страницы еще не загружены логикой. Значение которое проверяется методом = undefined. 

Каким способом возможно мне проверить значение из схемы?

 

По мере загрузки страницы, мое значение в данных схемы появляется, кнопка на странице генерируется раньше этого и поэтому она не видима.

Нравится

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

Можно создать на странице атрибут логического типа, присвоить ему значение false, а видимость компонента привязать к нему.

А когда нужно изменить видимость, в своей логике вызывать функцию, которая меняет значение атрибута. Пример можно увидеть в схеме SocialMessageHistoryItemPageV2, где:

"CommentsVisible": {
	"dataValueType": this.Terrasoft.DataValueType.BOOLEAN,
	"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
	"value": false
},
...
/**
 * Toggle comments block visibility and load first portion of comments if it is visible and empty.
 * @protected
 */
toggleCommentsVisibility: function() {
	if (this.get("CommentCount") < 1) {
		return;
	}
	var newVisibilityState = !this.get("CommentsVisible");
	this.set("CommentsVisible", newVisibilityState);
	if (newVisibilityState && this.get("ShownCommentMessagesCount") === 0) {
		this.onLoadNextComment();
	}
},
...
{
	"operation": "insert",
	"name": "ESNCommentsContainer",
	"parentName": "HistoryV2MessageFooterContainer",
	"propertyName": "items",
	"values": {
		"itemType": this.Terrasoft.ViewItemType.CONTAINER,
		"wrapClass": ["esn-comments-container"],
		"visible": {"bindTo": "CommentsVisible"},
		"items": []
	},
	"index": 1
},

 

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