我有一个显示问题的插件:http://plnkr.co/edit/VcLSX8KmyPwxU6EXe9RR。
如果选择一行,则会出现一个模态。如果单击取消按钮,将出现另一个模式以确认取消。在取消模式中,有两个“否”按钮。一个直接更新一个observable,另一个通过另一个函数更新observable。两者似乎都按预期工作,但是直接调用observable的那个会在控制台中引发错误。
我正在寻找更多有关此内容的信息。我不希望有一个额外的函数暴露更新这个observable,但如果这是正确的方法,那么我就是这样做的。此外,如果这是正确的方法,是否有一些地方可以解释为什么它是正确的方式。
答案 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
。