当我在 ember 数据中创建或更新 (belongs_to) 模型和 (has_many) 模型中的自动同步更新列时
Posted
技术标签:
【中文标题】当我在 ember 数据中创建或更新 (belongs_to) 模型和 (has_many) 模型中的自动同步更新列时【英文标题】:When I create or update the (belongs_to) model and auto-sync update column in (has_many) model in ember data 【发布时间】:2014-01-25 14:10:21 【问题描述】:DEBUG: -------------------------------
DEBUG: Ember : 1.2.0
DEBUG: Ember Data : 1.0.0-beta.4
DEBUG: Handlebars : 1.1.2
DEBUG: jQuery : 1.10.2
DEBUG: -------------------------------
我的模型是这样的:
App.Order = DS.Model.extend
lists: DS.hasMany('list', async: true)
total: DS.attr 'number'
App.List = DS.Model.extend
order: DS.belongsTo 'order'
price: DS.attr 'number'
number: DS.attr 'number'
totalPrice: DS.attr 'number'
订单显示路线:
App.OrderRoute = Em.Route.extend
model: (params)->
@store.find 'order', params.order_id
当我创建这样的列表时,我可以在订单显示页面中创建和更新列表:
new_list = @store.createRecord('list', "price": 5, "number": 1)
new_list.save().then (model) =>
@content.get('lists').pushObject model
totalPrice 是 price
* number
但它是在服务器中计算的,因此 create 将从服务器返回 totalPrice
。
但是Order
列total
加上所有List
列totalPrice
,所以当我创建List
时,我的服务器将更新Order
total
,但我的web 端看不到一切都在更新。我必须刷新页面才会看到total
更新。
所以,我的第一个问题是:
How can use ember data to reload the Order total when the List is created?
然后当我更新我创建的列表时,代码如下:
订购展示模板
#each lists itemController='list'
input type="text" value=price class="form-control"
input type="text" value=number class="form-control"
<a href="#" action 'editList' class="btn btn-primary btn-xs">
edit
</a>
/each
列表控制器:
editList: ->
@content.set('price', @get('price'))
@content.set('number', @get('number'))
@content.save().then( (list)=>
return list
, ()->
alert 'Wrong!'
)
当list
更新时,服务器没有任何返回,我的问题是:
How can use ember data to reload the List totalPrice when the List is update? Because the totalPrice to calculate in the server.
我认为所有的问题都可以使用ember data
reload()
或使用ember
observes
,但我不知道如何使用它们是最好的方法。或者有什么方便的方法来解决问题?
提前致谢。
【问题讨论】:
【参考方案1】:我建议你尝试使用计算属性。那可能会解决这个问题。
http://emberjs.com/guides/object-model/computed-properties/
【讨论】:
我想在服务器中计算。如何在两个模型之间使用计算属性?以上是关于当我在 ember 数据中创建或更新 (belongs_to) 模型和 (has_many) 模型中的自动同步更新列时的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Ember Data 1.13.7 中创建和保存新模型并更新 UI