更新 - 下面灰烬:返回一个值或一组从灰烬承诺一个模型属性
如果我有一个承诺,是有可能的更多信息从它返回一个值?
let itemData = [];
model.data.get('products').then(relatedItems => {
relatedItems.forEach(function(item,index) {
console.log(item.get('name')); // Product 1, Product 2 etc
itemData.pushObject(item);
});
},reject => {
console.log('error '+reject);
});
如果我尝试并在承诺解决后返回itemData数组,我得到未定义。
或者(最好)我希望能够建立一个模型属性时的承诺已解决:
// component code
itemData:null,
init() {
let model = this.get('data');
model.data.get('products').then(relatedItems => {
relatedItems.forEach(function(item,index) {
this.set('itemData',item);
});
},reject => {
console.log('error');
});
}
之所以要的,这是我需要的产品项目进行排序,其我只能通过诺言访问(在这个例子中)。设定了ItemData属性,我打算做这样的事情:
sortedItems:computed.sort('itemData','sortProperties'),
sortProperties:['name:desc']
更多信息:
在我的产品路线,product.items.item我有一个分页组件
{{pagination-item-trad data=model}}
路线product.items.item中的模型挂钩为
model(params) {
let itemModel = this.store.findRecord('product',params.id);
let mainModel = this.modelFor('product.items');
return Ember.RSVP.hash({
data:itemModel,
mainData:mainModel
});
}
mainModel将包含该特定产品的类别模型。
由于产品类别模型与产品有多对多关系,因此我需要使用承诺访问组件中的产品数据,直到需要对产品数据进行排序时,这并不是问题。我试图做的是从承诺(itemData下面)获取产品信息,然后在计算的属性中使用它。所以问题是我如何从代码中的其他地方提取数据?有没有更好的方法来实现这一目标?我希望这更清楚!
sortedItems:computed.sort('itemData','sortProperties'),
sortProperties:['name:desc']
更详细的组件:
import Ember from 'ember';
const {computed} = Ember;
export default Ember.Component.extend({
itemData:null, // i would like to set this within the promise
sortedItems:computed.sort('itemData','sortProperties'),
sortProperties:['name:desc'],
init() {
let allData = this.get('data');
let mainModel = allData.mainData;
var self = this;
let itemData = [];
mainModel.data.get('products').then(relatedItems => {
relatedItems.forEach(function(item,index) {
console.log(item.get('name')); // prints Product 1 etc etc
itemData.pushObject(item);
});
self.set('itemData',itemData); // I can't do this
},reject => {
console.log('error '+reject);
});
}
// rest of code omitted for brevity
});
第5行有一个错字,缺少“'”: 'let model = this.get('data ^);' – Pavol
您可以设置依赖于模型的计算属性吗? ('data.model.products',function(){ return this.get('data.model.products')。filter(...); });' – Pavol
It wont因为他使用承诺而工作。 –