用户选择时不显示Knockout.js Computed

用户选择时不显示Knockout.js Computed,knockout.js,observable,computed-observable,Knockout.js,Observable,Computed Observable,我有一个表,其中每一行都绑定到一个Knockout.js模型: foreach: treatmentsOptions 我希望用户能够在每个表行中单击“添加”按钮,并且该按钮的颜色不同,并且可以添加多个行。我想我应该通过给名为IsSelected的模型属性赋值,然后使用样式绑定来实现 我有这段代码,看起来很有效,但显然没有根据我想要的内容进行过滤: self.treatmentsOptions=ko.computed(函数(){ _dummyObservable() var是链接的=$.map(

我有一个表,其中每一行都绑定到一个Knockout.js模型:

foreach: treatmentsOptions
我希望用户能够在每个表行中单击“添加”按钮,并且该按钮的颜色不同,并且可以添加多个行。我想我应该通过给名为IsSelected的模型属性赋值,然后使用样式绑定来实现

我有这段代码,看起来很有效,但显然没有根据我想要的内容进行过滤:

self.treatmentsOptions=ko.computed(函数(){ _dummyObservable()

var是链接的=$.map(self.treatments(),函数(obj){
for(var i=0;i
}))

现在,我想要的是,每当用户单击“Add”(添加)并触发该命令时,以下代码都将工作:

self.treatmentsOptions = ko.computed(function () {
    _dummyObservable();

    var is_linked = $.map(self.treatments(), function (obj) {
        for (var i = 0; i < self.linkedItems().length; i++) {
            if (self.linkedItems()[i].PriceListItemId() == obj.Id())
                return obj.Id();
        }
    });

    for (var i = 0 ; i < self.treatments().length ; i++) {

        self.treatments()[i].IsSelected = ko.observable(false);

        if (is_linked.includes(parseInt(self.treatments()[i].Id()))) {
            self.treatments()[i].IsSelected = ko.observable(true);
        }
        else {
            self.treatments()[i].IsSelected = ko.observable(false);
        }
    }


    var options = self.treatments();
    return options;

});
self.treatmentsOptions=ko.computed(函数(){
_dummyObservable();
var是链接的=$.map(self.treatments(),函数(obj){
for(var i=0;i
我想把每一排桌子都涂上颜色。 我在这里缺少什么?

通过使用值调用它们来设置
ko.observable
s。此代码块看起来非常可疑:

// Don't do this:
self.treatments()[i].IsSelected = ko.observable(false);

if (i % 2 == 0) {
    self.treatments()[i].IsSelected = ko.observable(true);
}
else {
    self.treatments()[i].IsSelected = ko.observable(false);
}
它可能应该被以下内容取代:

self.treatments()[i].IsSelected(i % 2 === 0);
请注意,可以使用
n个子(奇数)
n个子(偶数)
选择器在css中设置交替颜色行的样式


您还可以在
foreach
绑定的绑定上下文中使用
$index
属性。

谢谢,我会修复此代码,但我问的是用户选择(代码的第二部分)。你也有答案吗?
self.treatments()[i].IsSelected(i % 2 === 0);