【问题标题】:Supplying a callback to Jeditable向 Jeditable 提供回调
【发布时间】:2012-11-16 19:26:34
【问题描述】:

总结:当我尝试向 Jeditable 提供 onsubmitonreset 回调时,我收到 Object [function] has no method 'apply' 错误。

我是如何到达这里的:我一直致力于a rails plugin to supply Jeditable and jWYSIWYG 的就地所见即所得编辑。开发是由我正在处理的 Rails 项目驱动的,该项目需要特定的功能。

我添加的选项之一是能够使用按钮触发 Jeditable 的编辑模式,而不是单击可编辑文本本身,遵循 this answer 中建议的模式。不过,下一步是在编辑模式下隐藏按钮,并在离开编辑模式时再次显示。

隐藏很简单;我刚刚在触发函数中添加了一行,它将.toggle() 发送到按钮。揭示更棘手。我想我需要在提交或取消时再次.toggle(),并且有用的是,Jeditable 提供了onsubmitonreset 回调。

但是,当我尝试使用这些回调时,我收到了 Object [something] has no method 'apply' 错误。

我正在尝试:因为这是在 Rails 助手的上下文中,实际的机制比这更复杂一些,但结果是我试图遵循 @ 987654323@,将 Jeditable 交给 args:

"onsubmit":"showTrigger",

然后包括这个脚本:

function showTrigger(settings, original) {
    $(".edit_trigger[id='element_id']").toggle();
}

但是,在提交更改或取消编辑时,我收到了错误

Object showTrigger has no method 'apply'

...如上所述。

我还尝试直接将函数作为"onsubmit" 参数发送(即"onsubmit": "function(settings, original){$(\".edit_trigger[id='element_id']\").toggle();}",然后我只得到Object function(settings, original){$(\".edit_trigger[id='element_id']\").toggle();} has no method 'apply'

我提交此回调的方式一定有问题。有什么想法吗?

ETA:This answer 建议我以某种方式向 Jeditable 提供一个字符串,而它需要一个函数。但是,因为我在 Rails 助手的上下文中工作,所以我完全不确定如何解决这个问题 - "showTrigger" 位在助手中设置为 Ruby 变量,尽管 window.showTrigger() 是在窗口已加载,我不知道如何在 Ruby 变量中指定该函数,以便在页面加载时将其识别为函数。

【问题讨论】:

    标签: javascript jquery callback jeditable jquery-callback


    【解决方案1】:

    正如我上面的 ETA 所建议的,问题确实是传递一个字符串而不是一个函数。我的 Rails 助手通过获取参数散列并使用 .to_json 为 Jeditable 生成参数。这使得字符串函数名变成了一个带引号的字符串。为了将此参数提供为 Jeditable 可以理解的函数名称,我需要将这些特定参数作为预 JSON 化参数包含在内。

    换句话说,我没有定义一个包含带有函数名称的字符串的 Ruby 变量,而是定义它包含带有函数名称的 JSON 对象。我用trigger_reset = '{ onsave: showTrigger, onreset: showTrigger }'代替了trigger_reset = 'showTrigger'

    然后,我没有将其作为另一个参数包含在 args 哈希中(该哈希是使用 $().extend() 添加到 JS 中的 args 对象中的),而是添加了 trigger_reset 变量的值作为第三个extend() 的参数。

    当然,事实证明这一切都与我最初的问题中没有包含的代码有关,所以难怪没人能提供帮助。对不起,还是谢谢你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 2020-10-20
      • 2011-12-09
      • 2021-01-02
      • 1970-01-01
      相关资源
      最近更新 更多