背景
我更习惯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。
谢谢!
答案 0 :(得分:1)
重新加载生活在各个型号上,而不是模型阵列上。您的第二种方法是正确的方法,除非您想迭代数组控制器中的项并调用重新加载。