Ember.js 将数据存储中的两个对象合并为一个字符串

Ember.js combining two objects from datastore to a string

我从数据存储区的 2 个不同位置收集了 1 个字符串,一个 URL 和一个昵称,我想做的是将这两个结合起来,这样我就可以 "pre-select" 在我的下拉列表中。问题是,如果我检查 "declaration of the variables" 中的值,那么我会收到文本结果警报,但如果我在尝试组合这两个字符串时发出警报,我会得到 [Object object], [Object object] 。出于某种原因,我首先获得对象对象,然后是 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'));
},

这是我想使用计算属性或观察者的情况吗?我是 Ember.js 的新手,感觉应该很简单。

您可以使用 Promise.all:

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

或者只使用异步函数:

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);
}