【发布时间】:2013-07-22 05:06:16
【问题描述】:
如果我在字符串中有方法名,在 Ruby 中我可以使用 send 动态调度方法,例如
method_name = "delete"
send method_name
我也可以利用插值:
method_name = "add"
send "#{method_name}_task", args
我在 javascript 中定义了 2 个函数,一个用于删除,一个用于更新。每个按钮都是动态添加的,目前,只有 delete 方法通过button.on "click" 绑定,例如
b.on "click", (event) ->
event.preventDefault() # stop submission via postback
this_button = $(this)
task_id = this_button.data("task-id")
delete_task( task_id, this_button )
false
我希望能够做到这一点:
method_name = "delete"
b.on "click", (event) ->
event.preventDefault() # stop submission via postback
this_button = $(this)
task_id = this_button.data("task-id")
send "#{method_name}_task", task_id, this_button
false
这两个函数绑定的唯一区别就是这一行。如果有明显的方法,减少重复会很有帮助。我在搜索中没有找到任何东西,所以如果有人可以提供帮助,将不胜感激。
【问题讨论】:
-
你在咖啡脚本代码中发送什么?在你有
obj的红宝石示例中。 -
@Esailija 抱歉,如果不清楚,我没有在 javascript 中使用对象。 Ruby 自动使用 self 即 this,因此示例中不需要对象,我只是认为它会更清晰。我会改的,谢谢。
-
“Ruby 自动使用 self 如果没有明确给出接收者”我应该在上面写的。
标签: javascript jquery ruby coffeescript metaprogramming