저장에 두 배로 :엠버 계산 된 건물은 hasMany의 관계에 업데이트되지 나는 두 가지 모델의 다른 hasMany의 관계와 하나가
선적 :
import DS from 'ember-data';
export default DS.Model.extend({
pickup_address: DS.belongsTo('address', { inverse: null }),
delivery_address: DS.belongsTo('address', { inverse: null }),
shipment_lines: DS.hasMany('shipment-line', { inverse: null }),
shipmentPrice: Ember.computed('[email protected]_price', function() {
let price = 0;
this.get('shipment_lines').forEach(function(shipment_line) {
price += Number(shipment_line.get('package_price'));
});
return price;
}),
});
그리고 선적 라인 모델 :
import DS from 'ember-data';
export default DS.Model.extend({
description: DS.attr('string'),
package_weight: DS.attr('number'),
package_length: DS.attr('number'),
package_width: DS.attr('number'),
package_height: DS.attr('number'),
package_price: DS.attr('number'),
});
컨트롤러에서 발송물에 새 발송물을 추가 할 때 API에서 패키지 가격을 가져 와서 배송 라인에 추가합니다 :
,addShipmentLine(shipmentLine) {
// Get price for shipment line
this.getShipmentLinePrice(shipmentLine);
// Add shipment line to shipment
let shipment = this.get('shipment');
shipment.get('shipment_lines').addObject(shipmentLine);
},
getShipmentLinePrice 기능 (간체) : 나는 템플릿의 shipmentPrice
를 인쇄하려고하면
getShipmentLinePrice(shipmentLine) {
...
// Get weight and type
let weight = shipmentLine.get('package_weight');
let length = shipmentLine.get('package_length');
let height = shipmentLine.get('package_height');
let width = shipmentLine.get('package_width');
// Fetch price from API
this.get('price').getPackagePrice(weight, length, height, width).then(
(price) => {
shipmentLine.set('package_price', price['price']);
}
);
}
그리고 마지막으로,이 업데이트되지 않습니다. 서버에서 가격이 반환되고 shipment_line
package_price
이 설정되어 있어도 마찬가지입니다.
또한 배송비를 shipment.save();
으로 저장하고 경로가 표시 페이지로 리디렉션되면 페이지를 새로 고침 할 때까지 가격이 두 배가됩니다. 페이지 새로 고침 후 모든 항목이 올바르게 표시됩니다.
첫 번째 질문은 새 발송물 오브젝트를 추가 할 때 shipmentPrice가 업데이트되도록 배송 물품을 계산하려면 어떻게해야합니까? 아니면 불가능한가요?
두 번째 질문은 저장 한 후에 가격이 왜 두 배가 되는가입니다.
늦게 답변을 드려 죄송합니다. 시험해 볼 기회가 생겨서 같은 결과를 얻었습니다. – pusle