我无法想出如何创建一个Knockout点击绑定,除非JavaScript确认对话框返回true,否则不执行valueAccessor。
它可能看起来像这样:
<a data-bind="confirmClick: { message: 'Are you sure?', click: someMethod }">Confirmable link</a>
在内部,confirmClick 绑定将执行类似以下的操作:
if (confirm(message)) {
click();
}
我知道我可以通过将confirm(...)
代码放在我的viewModel中来避免这样做,但那似乎不是放置这种代码的适当位置。我可能还可以使用jQueryUI或Bootstrap完成这种确认对话框,但我希望能够将其直接应用于任何项目中。
我已经在互联网上搜索了很久,但没有找到什么有用的信息... 我甚至查看了knockout的click事件的源代码(https://github.com/knockout/knockout/blob/master/src/binding/defaultBindings/event.js),但它看起来并不友好...
非常感谢任何形式的帮助!
click:function() { ....}
应该返回什么? - Alex Dreskoundefined
,因此 KO 不会调用您的处理程序,也不会执行浏览器操作(点击链接)。但是您可以根据自己的需要进行更改。 - nemesvallBindings
而不是viewModel
。你的JSFiddle能够工作是因为你在最终方法中没有使用vm
参数。 - Michael