【问题标题】:Knockout: click & checked bindings in one element淘汰赛:单击并检查一个元素中的绑定
【发布时间】:2012-11-25 20:41:10
【问题描述】:

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

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());​

我的 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>

【问题讨论】:

    标签: javascript knockout.js knockout-2.0


    【解决方案1】:

    如果您像下面这样修改您的 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;
        }
    }
    

    return true 是这里的关键部分。

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

    【讨论】:

    • return true; 帮助我。非常感谢!
    【解决方案2】:

    关键是在点击处理函数结束时return true;!这会正确更新 UI。

    【讨论】:

    • 谢谢!!这就是我一直在寻找的答案!
    猜你喜欢
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    相关资源
    最近更新 更多