0

背景

我更习惯于 Rails,但试图通过切换到 MVC 来改进我的客户端 javascript。Ember 似乎很适合我(它与 Rails 有很好的集成以及类似的配置方法约定)。

我正在使用 Ruby 2.0.0、Rails 4.0.0 和 Ember 1.0.0-rc6.3,所以要意识到这一切都是新的。

但是,到目前为止,我已经成功地通过 JSON API 显示数据库中的数据,没有任何问题,而且效果很好。

问题

不过,当数据库发生更改时,我目前正在努力更新数据。

我最初的方法是首先使用轮询来保持客户端数据随着后台作业处理和更新数据库而更新(我想进一步尝试 SSE 和 Live 以使这个过程更好 - 但要从轮询开始)。

轮询方面在我的控制器中工作正常

App.AnalysesController = Ember.ArrayController.extend
  loaded: (->
    setTimeout (=> @poll()), 1000
  ).observes('content.isLoaded')

  poll: ->
    console.log @get('content')
    @get('content').reload()

我以为我已经找到了解决此提交问题的方法:

https://github.com/emberjs/data/commit/278a0b863f0b1b2494fe2319ac12be6167195f6b

借此您可以重新加载模型。

不幸的是,当我尝试时遇到此错误...

Uncaught ReferenceError: reload is not defined

我不明白,因为看起来我的内容格式正确并且没有更新

Class {type: function, store: Class, isUpdating: false, toString: function, constructor: function…}

但是-这有效...

App.AnalysesController = Ember.ArrayController.extend
  loaded: (->
    setInterval (=> @poll()), 1000
  ).observes('content.isLoaded')

  poll: ->
    @set('content', App.Analysis.find())

虽然我感觉不对 - 我应该使用模型而不是肯定复制查找查询?

如果有人知道为什么重新加载不起作用,我会非常感激,因为我遇到了一些障碍,但到目前为止,我一直在享受学习 Ember。

谢谢!

4

1 回答 1

1

Reload 存在于单个模型上,而不是模型数组上。您的第二种方法是正确的方法,除非您想遍历数组控制器中的项目并调用 reload。

于 2013-07-28T17:07:17.563 回答