向Jeditable提供回调

时间:2012-11-16 19:26:34

标签: javascript jquery callback jeditable jquery-callback

摘要:当我尝试向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帮助器的上下文中,实际的机制比这更多涉及,但结果是我试图遵循{ {3}},将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 pattern向我建议,当我想要一个函数时,我会以某种方式向Jeditable提供一个字符串。但是,因为我在Rails帮助器的上下文中工作,所以我完全不确定如何解决这个问题 - "showTrigger"位被设置为帮助器中的Ruby变量,尽管{{1}在窗口加载时定义,我不知道如何在Ruby变量中指定该函数,以便在页面加载时将其识别为函数。

1 个答案:

答案 0 :(得分:0)

正如我上面提到的ETA所说,问题确实是传递了字符串而不是函数。我的Rails助手通过使用参数哈希并使用.to_json为Jeditable生成参数。这使得字符串函数名称成为带引号的字符串。为了将此参数作为Jeditable理解的函数名提供,我需要将这些特定参数包含在JSON-ified之前的参数中。

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

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

当然,事实证明,所有这些都与我原来的问题中没有包含的代码有关,所以难怪没有人可以提供帮助。抱歉,无论如何,谢谢。