Knockout.js Observable数组和在KnockoutJS中更改css类

Knockout.js Observable数组和在KnockoutJS中更改css类,knockout.js,Knockout.js,我有一个非常简单的问题,但作为一个新手,我很挣扎 我希望有几个可点击的按钮,当按下时可以更改css类和send以及ajax查询(基本上可以切换或不切换) 以下是我的精彩观点: function addStuffViewModel() { // Data var self = this; self.movement = ko.observableArray([ { name: 'Car', isChecked: false }, { name

我有一个非常简单的问题,但作为一个新手,我很挣扎

我希望有几个可点击的按钮,当按下时可以更改css类和send以及ajax查询(基本上可以切换或不切换)

以下是我的精彩观点:

function addStuffViewModel() {
    // Data
    var self = this;
    self.movement = ko.observableArray([
        { name: 'Car', isChecked: false },
        { name: 'Bus', isChecked: false },
        { name: 'Bike', isChecked: false },
         ]);

    toggleButton = function(data,event) {
            data.isChecked = true;
            alert(data.isChecked)
    }    
};

ko.applyBindings(new addStuffViewModel());
这是电话:


这会提醒您,isChecked已更改,但observableArray未注册更改。我觉得我希望它比实际情况更“神奇”

我相信这是一个怪诞的错误,人们会笑,但任何帮助都会被感激的

你想要“倾听”的可观察数组中每个对象的属性也需要被观察。通常,执行此操作的方法是创建另一个描述这些对象的ViewModel:

function Item(name, isChecked) {
    this.name = ko.observable(name);
    this.isChecked = ko.observable(isChecked);
}
然后更新可观测阵列:

self.movement = ko.observableArray([
    new Item('Car', false),
    new Item('Bus', false),
    new Item('Bike', false)]);
示例:


您可以通过定义
上的
切换按钮
功能进一步收紧代码:

function Item(name, isChecked) {
    var self = this;

    this.name = ko.observable(name);
    this.isChecked = ko.observable(isChecked);
    this.toggleButton = function () {
        self.isChecked(true);
    };
}
。。。然后更新您的视图:


正如我所说,新手犯了错误。谢谢我一直在这件事上扯头发……)@阿尔班德:没问题!很乐意帮忙。