单击使用knockoutjs进行预处理

时间:2014-02-14 14:30:16

标签: javascript jquery data-binding knockout.js

当我点击与knockoutjs绑定的内容时,我正在尝试让用户确认(通过data-bind =“click:..)

我发现了一些名为预处理的东西,但我没有让它发挥作用。 这是我的工作解决方案

ko.bindingHandlers.click.preprocess = function(val) {
    confirm("Are you sure do you want to click that?");
}

link:JSFiddle

PS。请查看此LINK

上的示例nr.2

2 个答案:

答案 0 :(得分:1)

对于调用函数,您添加到data-bind="click: ..."绑定并执行任何其他代码,您可以使用以下内容:

ko.bindingHandlers.click.preprocess = function (value) {
    return 'function() { console.log("Preprocess Click!"); ' + value + '(); }'
};

preprocess返回的所有内容都会粘贴到data-bind="click: ...",因此如果您在预处理后编写data-bind="click: Click",则会转换为:data-bind="click: function() { console.log('Preprocess Click!'); Click(); }"

答案 1 :(得分:0)

您没有正确地遵循示例,请注意该示例将函数作为字符串返回:

ko.bindingHandlers.click.preprocess = function(val) {
    return 'function(){ console.log(123); }'
}

我已修改您的Fiddle以显示其正常工作