启用单击绑定的条件 [英] Enable condition for click binding
本文介绍了启用单击绑定的条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以为点击绑定指定启用条件?例如,如果我有以下内容:
Is there any way to specify an enable condition for the click binding? For example if I have the following:
<div data-bind="click: toggleDialog">Click Me</div>
如果发生指定情况,我希望能够禁用点击,从而起到以下作用:
I'd like to be able to disable clicking if a specified condition occurs so something to the effect of:
<div data-bind="click: toggleDialog, enableClick: myName() === 'John'">Click Me</div>
我在想也许可以使用自定义绑定来解决这个问题,但是并不确定如何去做.
I'm thinking maybe a custom binding would work for this, but not quite exactly sure how to go about doing it.
推荐答案
您可以使用我对锚点所做的这种方法
You can use this approach that I did for anchors
(function() {
//First make KO able to disable clicks on Anchors
var orgClickInit = ko.bindingHandlers.click.init;
ko.bindingHandlers.click.init = function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
if(element.tagName === "DIV" && allBindingsAccessor().enable != null) {
var disabled = ko.computed({
read: function() {
return ko.utils.unwrapObservable(allBindingsAccessor().enable) === false;
},
disposeWhenNodeIsRemoved: element
});
ko.applyBindingsToNode(element, { css: { disabled: disabled} });
var handler = valueAccessor();
valueAccessor = function() {
return function() {
if(ko.utils.unwrapObservable(allBindingsAccessor().enable)) {
handler.apply(this, arguments);
}
}
};
}
orgClickInit.apply(this, arguments);
};
})();
更多详细信息: https://github.com/AndersMalmgren/Knockout.BindingConventions/wiki/Button-约定
这篇关于启用单击绑定的条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文