![](/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.