通過此示例,您將能夠指定每個項目的類別。
查看
<div data-bind="foreach: items" >
<span data-bind="css : $parent.styling($data), text: $data"></span>
</div>
JS:
var vm = {
items : ['a','b','c' ],
styling : function(item) {
if(item =='a') return 'active';
if(item =='b') return 'active bold';
return '';
}
};
ko.applyBindings(vm);
See fiddle
編輯:
@Shadow:你是對的,如果你將一個值傳遞給一個計算它設置(或寫)它。
我認爲這將符合您的需求。 當在一個項目上調用切換功能。 然後,活動可觀察性將被改變,最後計算出造型。
JS
var Item = function(data) {
var self = this;
self.name = data;
self.active = ko.observable(false);
self.styling = ko.computed(function(item) {
if(self.active()) return 'active';
return '';
});
self.toggle = function(){
self.active(!self.active());
}
};
var vm = {
items : [new Item('a'),new Item('b'), new Item('c') ]
};
ko.applyBindings(vm);
查看
<div data-bind="foreach: items" >
<span data-bind="css : styling, text: name, click : toggle"></span>
<br/>
</div>
See fiddle
Sortof在正確的方向 - 但對我來說陣列充滿子視圖。如果我可以從父視圖調用子視圖中的函數,這個答案可能會起作用......你知道你是否可以傳遞它? – Shadow
其實,這似乎並不奏效,因爲我們沒有使用可觀察的。這意味着我無法跟蹤活動項目(並因此添加樣式)。你不能將論據(據我所知)傳遞給ko.computed。任何其他想法? – Shadow