3

我有一个Book模型,有几个属性,title例如authorpricesprices是历史定价信息的大列表。

当我从 API 请求书籍列表时,我会排除该prices字段以保持响应较小。

在书籍详细视图中,我请求完整的书籍信息(并使用 d3 呈现图表)。ember-data 从 API 中获取单本书,更新模型,一切都很好。

我的书单页是我的书单资源的嵌套资源:

App.Router.map ->
  @resource 'books', ->
    @resource 'book', path: ':book_id'

App.BooksRoute = Ember.Route.extend
  model: ->
    App.Book.find()

App.BookRoute = Ember.Route.extend
  model: (params) ->
    Book.find(params.book_id)

当我在图书详细信息页面(/#/books/42而不是/)上输入应用程序时,我无法说出我的 API 首先响应哪个请求,是单本书还是图书列表。有时,会先处理单本书数据,然后进入书单数据,ember-data 会用新检索的数据覆盖现有数据。

我的问题是:如果在单个图书响应之后收到图书列表响应,则未包含在图书列表响应中的prices字段将从模型记录中删除。

因此,我的问题是:有没有办法防止 ember-data 用 覆盖字段undefined

我也不太理解这种行为。这实际上是一个错误吗?我看到更新新 API 响应指定的null值是有意义的,但是用替换值undefined是相当令人惊讶的。


  • 我可以通过告诉我的 API 在响应列表数据之前等待几秒钟来轻松复制这一点
  • 我正在使用最新的 Ember 版本(1.0 最终版!)
  • 我正在使用来自builds.emberjs.com的最新 ember-data
  • prices是“原始”(自定义)类型的属性,但如果我author从列表响应中排除该字段,它是相同的

如果有替代 ember-data 的方法可以解决这个问题,我愿意切换到那个(如果它没有其他大的缺点——我目前什至没有使用hasMany!)

4

0 回答 0