启用单击绑定的条件 [英] Enable condition for click binding

查看:63
本文介绍了启用单击绑定的条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以为点击绑定指定启用条件?例如,如果我有以下内容:

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

http://jsfiddle.net/xCfQC/11/

(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆