Вопрос

Можно ли обратиться из метода getEntityCollection к атрибуту страницы?

Добрый день!

Есть атрибут страницы, например "AttributeNameId". Выполняю запрос к базе данных, все хорошо,  но при попытке записать значение в атрибут с помощью команды - this.set("AttributeNameId", someValue) выходит ошибка "Uncaught TypeError: this.set is not a function". 

Подскажите, пожалуйста, как можно изменить значение атрибута страницы из метода getEntityCollection класса EntitySchemaQuery.

Нравится

6 комментариев
Лучший ответ

Можно

Вы потеряли контекст его нужно привязывать,не забывайте Js асинхронный. Те вызывать нужно примерно так

esq.getEntityCollection(function(response) {
	if (response.success) {
		this.set('isMailboxSyncEnabled', true);
		this.set('isMailboxSyncExist', (response.collection.getItems().length > 0));
	}
}, this);

 

Если не получится приведите ваш код

Можно

Вы потеряли контекст его нужно привязывать,не забывайте Js асинхронный. Те вызывать нужно примерно так

esq.getEntityCollection(function(response) {
	if (response.success) {
		this.set('isMailboxSyncEnabled', true);
		this.set('isMailboxSyncExist', (response.collection.getItems().length > 0));
	}
}, this);

 

Если не получится приведите ваш код

Мой код выглядит так (отличия я вижу только на именах переменных):

esqModification.getEntityCollection(function(result) {
	debugger;
	if (!result.success || result.collection.getCount() <= 0) {
		this.set("ProductModification", null);
		this.set("ProductModificationId", null);
	}
});

Да, согласен что контекст потерян, не пойму только как к нему обратиться. 

Руслан Хасанов,

Ваш код должен выглядеть вот так:

esqModification.getEntityCollection(function(result) {
	debugger;
	if (!result.success || result.collection.getCount() <= 0) {
		this.set("ProductModification", null);
		this.set("ProductModificationId", null);
	}
}, this);

И ещё, почему в Вашем коде 2 строчки почти одинаковые:

this.set("ProductModification", null);

this.set("ProductModificationId", null);

'ProductModification' и 'ProductModificationId' - это что два разных поля?

Спасибо, Григорий, Алла! Только сейчас обратил внимание на разницу в коде. Почему в коде два почти одинаковых атрибута - потому что я не увидел другого решения своей задачи, в силу скорее всего недостаточного опыта в программировании. ProductModification - это лукап поле, а ProductModificationId - это значение лукап поля. Уверен что есть более красивая реализация моего кода, но пока так.

 

Руслан Хасанов,

Достаточно одной строки:

this.set("ProductModification", null);

Хорошо, Алла, в других реализациях клиентской схемы я пересмотрю свой подход. В данном случае у меня к этому атрибуту привязано много логики, которую я переделать не возьмусь (пока все работает ломать уже не хочется). С вашим подходом полностью согласен, спасибо за совет.

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