直接使用Observable </object>时,对象#<object>没有方法'apply'

时间:2014-01-21 17:36:01

标签: knockout.js

我有一个显示问题的插件:http://plnkr.co/edit/VcLSX8KmyPwxU6EXe9RR

如果选择一行,则会出现一个模态。如果单击取消按钮,将出现另一个模式以确认取消。在取消模式中,有两个“否”按钮。一个直接更新一个observable,另一个通过另一个函数更新observable。两者似乎都按预期工作,但是直接调用observable的那个会在控制台中引发错误。

我正在寻找更多有关此内容的信息。我不希望有一个额外的函数暴露更新这个observable,但如果这是正确的方法,那么我就是这样做的。此外,如果这是正确的方法,是否有一些地方可以解释为什么它是正确的方式。

1 个答案:

答案 0 :(得分:1)

当您使用click绑定时,您希望确保传递对函数的引用而不是直接调用函数。

所以,在你的绑定中你正在做:

data-bind="click: $parent.showCancelDialog(false)"

这将在绑定时最终执行您的代码。您可能希望指向一个将其设置为false的函数,如:

data-bind="click: $parent.hideCancelDialog"

使用该函数将其设置为false,或者您可以使用bind创建一个内联函数,并使用固定的第一个参数,如:

data-bind="click: $parent.showCancelDialog.bind(null, false)"

第一个参数是上下文(this执行时),这对于设置一个observable无关紧要,这就是为什么我只使用了null