当我在 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

但是Ordertotal 加上所有ListtotalPrice,所以当我创建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 datareload()或使用emberobserves,但我不知道如何使用它们是最好的方法。或者有什么方便的方法来解决问题?

提前致谢。

【问题讨论】:

【参考方案1】:

我建议你尝试使用计算属性。那可能会解决这个问题。

http://emberjs.com/guides/object-model/computed-properties/

【讨论】:

我想在服务器中计算。如何在两个模型之间使用计算属性?

以上是关于当我在 ember 数据中创建或更新 (belongs_to) 模型和 (has_many) 模型中的自动同步更新列时的主要内容,如果未能解决你的问题,请参考以下文章

无法在 vue ui 中创建或导入项目

更新或创建行数据库。拉拉维尔

如何在 Ember Data 1.13.7 中创建和保存新模型并更新 UI

如何在 DataGrip 中创建或连接到 localhost 数据库?

如何在 Perl 中创建或测试 NaN 或无穷大?

如何在 RSpec (rails) 中创建或指定关联?