Ember. js объединение двух объектов из хранилища данных в строку - PullRequest
0 голосов
/ 30 января 2020

Я собрал 1 строку из 2 разных мест в хранилище данных, URL и псевдоним, и я хочу объединить их, чтобы я мог «предварительно выбрать» в своем раскрывающемся списке. Проблема в том, что, если я проверяю значение в «объявлении переменных», я получаю предупреждение о текстовом результате, но если я потом предупреждаю, когда пытаюсь объединить две строки, я получаю [Object object], [Object object] вместо этого. И по какой-то причине я сначала получаю Object Objects, а затем URL, а затем псевдоним, который даже не в правильном порядке ..? Код выглядит следующим образом:

preSelect: function (orgSiteId, orgId) {
    'use strict';
    var url = this.get('store').find('orgSite', orgSiteId).then(function (orgSites) {
        alert(orgSites.get('url'));
        return orgSites.get('url');
    }.bind(this));
    var nickname = this.get('store').find('org', orgId).then(function (orgs) {
        alert(orgs.get('nickname'));
        return orgs.get('nickname');
    }.bind(this));

    this.set('testFillSelect', nickname + ', ' + url);
    alert(this.get('testFillSelect'));
},

Это ситуация, когда я хочу использовать вычисляемые свойства или наблюдателя? Я новичок в Эмбер. js и кажется, что все должно быть просто.

1 Ответ

1 голос
/ 30 января 2020

Вы можете использовать Promise.all:

Promise.all([url, nickname]).then(([urlResult, nicknameResult]) => {
  this.set('testFillSelect', nicknameResult + ', ' + urlResult);
});

или просто использовать функцию asyn c:

async preSelect (orgSiteId, orgId) {
  const orgSite = await this.get('store').find('orgSite', orgSiteId);
  const org = await this.get('store').find('org', orgId);

  const url = orgSite.get('url');
  const nickname = org.get('nickname');

  this.set('testFillSelect', nickname + ', ' + url);
}
...