![](/img/trans.png)
[英]Rerendering partial view at a JavaScript event in Ruby on Rails
[英]javascript on a partial - ruby on rails
我有一部分使用AJAX(原型框架)每3秒加載一次,方法是:
<script type="text/javascript">
new Ajax.PeriodicalUpdater('content', '/shouts/update.js', { method: 'get', frequency: 1});
</script>
這是控制器的一部分,用於加載部分:
respond_to do |format|
format.js {render(:partial => 'content', :locals => {:content => @last_shout.content})}
end
這是部分“ _content.html.erb”的內容:
<h2><%= content %></h2>
到目前為止,一切都很好。
我想補充一點,每次部分重載時,將使用Scriptaculous框架將其淡入。 我將此代碼添加到_content.html.erb部分:
<script type="text/javascript">
$('content').fade({ duration: 3.0, from: 0, to: 1 });
</script>
問題在於,它沒有在每次重新加載部分時都執行代碼,而是僅執行了一次。 為了使每次加載部分代碼都執行javascript代碼,我需要做什么?
您可以使用jrails將其與jquery一起使用...
然后代替
{render(:partial => 'content', :locals => {:content => @last_shout.content})}
您可以在關聯的rjs文件中完成相同的操作,並添加其他一些功能。
使用起來很簡單,在線上看一些例子。
我將褪色部分移到AjaxUpdater中:
<script type="text/javascript">
new Ajax.PeriodicalUpdater('content', '/shouts/update.js', { method: 'get', frequency: 1, onComplete: function() {$('content').fade({ duration: 3.0, from: 0, to: 1 });}});
</script>
這可能是時間問題(在調用onComplete之前替換了文本,但是更早地評估了文本中的腳本。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.