Knockout:在一个元素中单击并检查绑定

Oze*_*ich 14 javascript knockout-2.0 knockout.js

我有一系列限制,以及启用/禁用限制的复选框.但是复选框不起作用

的jsfiddle

function Limit(start, end)
{
    var that = this;

    this.start = start;
    this.end = end;

    this.label = ko.computed(function(){
        return that.start + ' - ' + that.end;            
    });
}

function ViewModel()
{
    var that = this;

    this.limits = [new Limit(1,2), new Limit(3,4), new Limit(4,5)];

    this.activeLimit = ko.observable(that.limits[0]);

    this.changeActiveLimit = function(limit)
    {
            that.activeLimit(limit);
    }
}

ko.applyBindings(new ViewModel());?
Run Code Online (Sandbox Code Playgroud)

我的HTML

<div data-bind="foreach: {data: limits, as: 'limit'}">
 <input type="checkbox" data-bind="click: $root.changeActiveLimit, checked: limit.label == $root.activeLimit().label"/>
    <span data-bind="text: limit.label"/> 

</div>
Run Code Online (Sandbox Code Playgroud)

Tar*_*zam 13

如果你修改你的viewModel如下,它将工作

function ViewModel()
{
    var that = this;

    this.limits = [new Limit(1,2), new Limit(3,4), new Limit(4,5)];

    this.activeLimit = ko.observable(that.limits[0]);

    this.changeActiveLimit = function(limit)
    {
            that.activeLimit(limit);
            return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

return true是这里的关键部分.

这是一个工作小提琴 http://jsfiddle.net/tariqulazam/WtPM9/10/


Ler*_*erg 12

关键是要回归真实; 在点击处理函数的末尾!这会正确更新UI.