Knockout绑定不更新类样式

时间:2013-02-20 05:39:37

标签: class binding knockout.js

我正在试图弄清楚如何使用knockout从html添加和删除类。

当我点击卡车时,按钮应该更新为btn-red类,并且车载按钮应该删除btn-red。

我可以看到事件绑定正在运行,因为触发了警报并返回了正确的值,但我无法让视图更新。

我已经整理了一个非常简单的JSFiddle.net/N8GBB/11/(stackoverflow不会因为某些原因让我发布链接) 这是我在jsfiddle中使用的代码

<button class="btn" data-bind="css:{'btn-red':type()=='car'}, click: set_to_car">Car</button>
<button class="btn" data-bind="css:{'btn-red':type()=='truck'}, click: set_to_truck">Truck</button>
var vehicle={ 
    type:ko.observable("car"),
           set_to_car : function(){
        this.type='car'
        alert(this.type);
    },
        set_to_truck: function(){
            this.type='truck'
     alert(vehicle.type);        
    }};

ko.applyBindings(vehicle);

1 个答案:

答案 0 :(得分:1)

您没有正确设置type观察。

ko.observable方法返回一个函数,因此如果要更改其值,则需要将其作为函数调用,并将新值作为参数。

var vehicle={ 
    type:ko.observable("car"),
           set_to_car : function(){
        this.type('car');
    },
        set_to_truck: function(){
            this.type('truck');  
    }};

演示JSFiddle

您可以在文档中阅读有关Reading and writing observables的更多信息。