在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