js执行.仅当某些条件为真时才用动词
Execute js.erb only if some condition is true
我对cofeescript或js不是很有信心,所以我有点困惑。我有一个快速编辑功能,它发送一个AJAX请求并更新数据库。目前我正在手动更改编辑的位置并显示它,但它看起来像一个欺骗我,徽章不会更新!我想重新渲染我的具体帖子。我给了我的<li>
一个data-id
属性,所以我可以通过Post.find($(#li).data('id'))
得到我的帖子(不太确定它是否有效,但应该有一种传递变量的方法。现在的主要问题是,我有其他的脚本在我的帖子/index.js。我不想被执行死刑。我只希望在AJAX成功(这是在另一个文件)或$('#form').submit
上执行与此相关的部分。现在我不知道如何做到这一点!这听起来像一个简单的问题,但我缺乏知识,如何所有其他脚本和限制这些脚本的一部分是有限的。
EDIT关于如何从另一个coffeescript或js文件调用我的index.js.erb的任何建议?或者发送参数并在该文件中使用它们?
如果这个Ajax在onchange事件上执行,那么您将传递一个稍后可以在.js上计算的值。erb文件。例如:
假设事件发生在text_field_tag
的onchange上<%= text_field_tag(:for_event, "", :onchange=> "TheAjax('identifier')") %>
然后声明一个函数(本例中为ajax)
<script>
function TheAjax(identifier){
var dataString = 'the_id='+identifier;
$.ajax(
{
type: "GET",
url: "/your_view_name/your_method",
data: dataString
});
return false;
}
</script>
Ajax将传递一个名为"the_id"的参数,其值为"identifier"(当您在onchange方法中调用该函数时,该值将作为参数传递。
现在,在你的js。Erb文件(应该链接到您的控制器方法之一,例如show方法),您可以计算"the_id"参数的值,然后决定采取哪些操作。例如:
(Show method in your controller)
def show
@my_identifier = params[:the_id] (session var so you'd access it on your js.erb file)
end
js。动词文件
<% case @my_identifier %>
<% when 'identifier' %>
Here you put whatever part of your JS you want to execute ONLY when the condition is met.
<% else %>
Whatever else you want to execute when the previous conditions are not met
<% end %>
还请记住,如果你想处理数据库更新,你也可以在你的控制器中做一个'case',并在满足条件时管理你的数据库更改
- 如何做到这一点,使代码在不传递条件后执行函数
- 如果条件匹配,则停止执行脚本
- If语句只执行第一个条件并运行其他条件,但没有结果
- Javascript同时执行If和Else条件(PHP)
- 如何在条件成立后停止程序执行
- 将JavaScript函数分配给提交按钮,该按钮应有条件执行
- 基于浏览器窗口大小的条件 JavaScript 执行
- 基于条件执行功能
- 如何正确使用条件执行根据输入绘制圆
- 在延迟一段时间后根据 if 条件执行函数
- on单击加载时的条件执行
- 基于Javascript条件执行PHP代码
- CRM 2013中功能区按钮操作的条件执行
- 如何根据jQuery中的if条件执行代码
- 一旦条件执行,就停止它
- 不能理解条件执行流程
- window.location不带条件执行
- JavaScript浏览器条件执行
- javaScript如何根据条件执行方法
- JavaScript 条件执行和变量范围