Javascript 如何在Ember.js中找到多个记录类型的所有条目?
我在Ember DS.Store中有两种类型的记录:用户和位置。(事实上,我有更多,但为了简单起见) 现在要获取所有条目,比如“user”,我只需Javascript 如何在Ember.js中找到多个记录类型的所有条目?,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我在Ember DS.Store中有两种类型的记录:用户和位置。(事实上,我有更多,但为了简单起见) 现在要获取所有条目,比如“user”,我只需 this.store.find('user') 现在假设我有一个变量allResults,并将其分配给这个命令 allResults = this.store.find('user') 这给了我余烬称之为promiseArray的东西,在这个promise数组加载之后,要做任何事情,我只需 allResults.then(successfunct
this.store.find('user')
现在假设我有一个变量allResults,并将其分配给这个命令
allResults = this.store.find('user')
这给了我余烬称之为promiseArray的东西,在这个promise数组加载之后,要做任何事情,我只需
allResults.then(successfunction(), failurefunction())
现在,当我只需要一种类型的记录时,这种方法非常有效——比如说,我只需要用户,我可以轻松地调用successfunction()作为第一个参数
然而,我的需求不止于此:我基本上是在构建一个搜索栏来搜索这些记录,因此如果有人键入“mary”,它需要同时显示用户“mary”和位置“mary Ave”(例如)
所以我需要的是
this.store.find('user')
&
因此,以下是我的问题:[我觉得其中任何一个都会起作用。]
你可以把承诺结合起来 像这样的东西应该适合你:
var bothPromise = Promise.all([
store.find('user'),
store.find('location')
]).then(function(values){
//merge the values arrays
var all = Em.A();
all.addObjects(values[0]); //users
all.addObjects(values[1]); //locations
return all;
});
bothPromise.then(function(allObjects){...
有关组合承诺的另一种解释,请参阅此承诺库中的“组合”部分
var bothPromise = Promise.all([
store.find('user'),
store.find('location')
]).then(function(values){
//merge the values arrays
var all = Em.A();
all.addObjects(values[0]); //users
all.addObjects(values[1]); //locations
return all;
});
bothPromise.then(function(allObjects){...