Можно ли обратиться из метода getEntityCollection к атрибуту страницы?
Добрый день!
Есть атрибут страницы, например "AttributeNameId". Выполняю запрос к базе данных, все хорошо, но при попытке записать значение в атрибут с помощью команды - this.set("AttributeNameId", someValue) выходит ошибка "Uncaught TypeError: this.set is not a function".
Подскажите, пожалуйста, как можно изменить значение атрибута страницы из метода getEntityCollection класса EntitySchemaQuery.
Нравится
Можно
Вы потеряли контекст его нужно привязывать,не забывайте 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);
Хорошо, Алла, в других реализациях клиентской схемы я пересмотрю свой подход. В данном случае у меня к этому атрибуту привязано много логики, которую я переделать не возьмусь (пока все работает ломать уже не хочется). С вашим подходом полностью согласен, спасибо за совет.