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);
}
我从数据存储区的 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);
}