【问题标题】:Click preprocessing with knockoutjs使用 knockoutjs 进行点击预处理
【发布时间】:2014-02-14 23:22:51
【问题描述】:
当用户单击与 knockoutjs 绑定的内容时,我试图要求用户确认(通过 data-bind="click: ..)
我发现了一个名为预处理的东西,但我没有让它工作。
这是我不工作的解决方案
ko.bindingHandlers.click.preprocess = function(val) {
confirm("Are you sure do you want to click that?");
}
链接:JSFiddle
PS。看看这个LINK上的示例nr.2
【问题讨论】:
标签:
javascript
jquery
data-binding
knockout.js
【解决方案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(); }"。
【解决方案2】:
你没有正确地按照这个例子,注意这个例子返回一个函数作为一个字符串:
ko.bindingHandlers.click.preprocess = function(val) {
return 'function(){ console.log(123); }'
}
我已经编辑了您的 Fiddle 以显示它有效