在Rails 4中我有一个类(区域)的索引和显示视图,它们有相当复杂的javascript来更新值。对于DRYness,HTML只是创建一个无数据布局,而js文件插入数据,修改样式等等。这些数据需要每15秒左右更新一次。 A common.js.coffee
文件包含如何在Rails中立即执行和定期执行ajax查询
root = exports ? this
root.executeQuery = (isAsync = true) ->
if $('#ajaxParams')? and $('#ajaxParams').data('model')?
# Use dynamic updates
update_url = '/' + $('#ajaxParams').data('model')
if $('#ajaxParams').data('id')?
update_url += '/' + $('#ajaxParams').data('id')
update_url += '.js'
$.ajax({url: update_url, async: isAsync, dataType: "script"}).done (content) ->
setTimeout (->
executeQuery()
), 15000
else
setTimeout (->
executeQuery()
), 15000
它处理定期更新。然后zones.js.coffee
包含
$(document).ready ->
executeQuery(false)
所以页面上准备好了,运行查询,动态内容插入,计时器定,然后定期更新。到目前为止,这么好,但是当我点击一个带我到区域显示方法的链接时,该页面无需数据,直到定时器启动ajax请求。没有页面准备好的事件。当我点击一个显示链接返回到索引时,会发生同样的事情。
如何让这些视图始终立即更新,或者至少缓存以前的数据,然后进行定期更新?
难道你不能在一个onclick事件吗? 'object.onclick = function(){Ajax request};' – ChrisBarthol