更新 - 下面灰燼:返回一個值或一組從灰燼承諾一個模型屬性
如果我有一個承諾,是有可能的更多信息從它返回一個值?
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因爲他使用承諾而工作。 –