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

标签 javascript ember.js promise

我从数据存储中的 2 个不同位置收集了 1 个字符串、一个 URL 和一个昵称,我想要做的是将这两者结合起来,这样我就可以在下拉列表中“预选择”。问题是,如果我检查“变量声明”中的值,则会收到文本结果警报,但是如果我在尝试组合两个字符串时发出警报,则会收到 [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);
}

关于javascript - Ember.js 将数据存储中的两个对象合并为一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59987903/

相关文章:

java - 帮助在 Tapestry5 中创建 JavaScript 混合?

Javascript 将变量传递给 onclick 不起作用

css - 使用 Ember 根据返回的字符串设置 CSS 类

javascript - 如何使用 "q"模块重构 mongoose 代码?

javascript - 运行服务器时 Promise.all() 无法解析 - 否则工作正常

Javascript 日期字符串返回无效日期

javascript - 将参数传递给 Knockout 中的子组件

ember.js - ember CollectionView 在最后突出显示时设置一个类名

javascript - Ember 每个循环在数组更新时重新渲染整个对象数组

javascript - 如何将现有的回调 API 转换为 Promise?