У меня есть таблица, где каждая строка связана с моделью Knockout.js:
foreach: treatmentsOptions
Я бы хотел, чтобы пользователь мог нажимать кнопку «Добавить» в каждой строке таблицы.и для того, чтобы это было окрашено по-разному, и может быть несколько добавленных строк.Я думал, что сделаю это, присвоив значение свойству модели с именем IsSelected, а затем использую привязку стиля.
У меня есть этот код, который, кажется, работает, но, очевидно, не фильтруется в зависимости от того, что я хочу:
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 (i % 2 == 0) {
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(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;
});
Я бы хотел, чтобы каждая строка таблицы была цветной.Что мне здесь не хватает?