2016-03-04 59 views
0

我無法訪問商店屬於關聯關係,該情況是我目前的路線是/sales-orders,所以它顯示的銷售訂單一格,我有一個鏈接 - 以幫手每個項目,當我點擊一個項目應該重定向到/sales-order/1灰燼商店不自動存儲屬於關聯數據

/routes/sales-order 
model(params) { 
    return this.store.findRecord('salesOrder', params.salesOrder_Id).then(function(salesOrder) { 
    return salesOrder; 
}); 

},

在我的控制器我有這個初始化函數添加和觀測到我的模型

/controllers/sales-order 
    init: function(){ 
     this._super.apply(this, arguments); 
     this.addObserver('model', this, 'modelChange'); 
    }, 

    modelChange: function(sender, key, value, rev){ 

     if(this.get('openModalForEditList') != true){ 
     this.set('paymentTerm', this.store.peekAll('sales-order-payment-term').objectAt(0).get('description')); 
     this.set('shippingMethod', this.store.peekAll('sales-order-shipping-method').objectAt(0).get('shippingMethodName')); 
     this.set('salesOrderDetails', this.store.peekAll('sales-order-detail')); 
     //this.get('openModalForEditList') == true ? this.set('openModal', true) : this.set('openModal', false); 
    } 

這裏發生在modelChange功能問題,而試圖從服務器訪問this.store.peekAll('sales-order-payment-term').objectAt(0).get('description')this.store.peekAll('sales-order-shipping-method').objectAt(0).get('shippingMethodName')數據最初不其存儲到餘燼店而父(銷售訂單)的模型已經被加載到店裏來。 (只負載的全面轉型後的數據我猜?)

因此,如何與父母餘燼商店使孩子/屬於關聯的數據負載一起?

下面是我的模型定義。

//sales-order model (parent model) 
export default DS.Model.extend({ 
    notes: DS.attr(), 
    total: DS.attr(), 
    salesOrderDetailRelationship: DS.hasMany('salesOrderDetail', {inverse: 'salesOrder'}), 
    paymentTerm: DS.belongsTo('sales-order-payment-term'), 
    shippingMethod: DS.belongsTo('sales-order-shipping-method') 
}); 

//sales-order-payment-term 
export default DS.Model.extend({ 
description: DS.attr(), 
salesOrder: DS.belongsTo('sales-order')}); 

//sales-order-shipping-method 
export default DS.Model.extend({ 
    // shippingMethodId: DS.attr(), 
    shippingMethodName: DS.attr(), 
    salesOrder: DS.belongsTo('sales-order') 
}); 

回答

0

Ember-Data中的所有關係在默認情況下都是異步的。因此,您必須先將它們加載到商店中,然後才能查詢它們。

嘗試添加afterModel()鉤在你的路線:

afterModel(model) { 
    return Ember.RSVP.hash({ 
    orderDetail: model.get('salesOrderDetail'), 
    paymentTerm: model.get('sales-order-payment-term'), 
    shippingMethod: model.get('sales-order-shipping-method') 
    }) 
} 

在你modelChange功能,你最好使用this.get(model.xxxxx)代替this.store.peekAll('xxx')[0]

+0

我已經嘗試過這種方法,但仍然在我的情況下不能正常工作。如果一個事件,我可以調用,當過渡成功,然後在該函數執行peekAll()?那可能嗎? – user3197077