【问题标题】:checkbox knockout click binding not working properly复选框敲除单击绑定无法正常工作
【发布时间】:2018-03-01 18:16:23
【问题描述】:

我知道敲除希望我们在绑定到 click 事件的函数中返回 true 以选中/取消选中复选框。

我尝试了以下code,但它没有选中复选框。我可以使用匿名计算函数显示该值,但我的数组可能很大,我不想保留性能开销。

还有其他方法吗?还是我做错了?

编辑:添加代码

HTML

<div data-bind="foreach: array">
    <div data-bind="foreach: $data.child">  
        <input type="checkbox" data-bind="checked: isChecked, click: function(data, event){$parentContext.$parent.clickBox(data, event, $parent)}">
        <span data-bind="text: $data.value"></span>    
    </div>
   <p data-bind="text: label"></p>
</div>

JS

var mainModel = function(){
  var self = this;  
  self.isChecked = ko.observable(true);  
  self.clickBox = function(data, event, $parent){
    var j=0;
    for(var i=0; i<$parent.length; i++){
        if($parent[i].isChecked()){
        j++;
      }
    }
    $parent.label(j);
    return true;
  }

  self.array = ko.observable(
  [
    {child: [
        {value: 'a', isChecked: ko.observable(false)},
      {value: 'b', isChecked: ko.observable(false)}],
     label: ko.observable(0)
    },
    {child: [
        {value: 'c', isChecked: ko.observable(false)},
      {value: 'd', isChecked: ko.observable(false)}],
     label: ko.observable(0)
    }
  ]);
}

ko.applyBindings(new mainModel());

【问题讨论】:

  • Fiddle 在此处显示的代码之上是可以接受的,而不是作为替代品。

标签: javascript knockout.js


【解决方案1】:

您缺少return,更改以下代码

<input type="checkbox" data-bind="checked: isChecked, 
click:   function(data, event){
$parentContext.$parent.clickBox(data, event, $parent)}">

<input type="checkbox" data-bind="checked: isChecked, 
click:   function(data, event){
return $parentContext.$parent.clickBox(data, event, $parent)}">

如果你不传递返回处理程序,默认情况下敲除将通过调用阻止该操作

 if (handlerReturnValue !== true) { 
       if (event.preventDefault)
             event.preventDefault();
        else
             event.returnValue = false;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-22
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多