2012-01-12 52 views
1

我想在列表中顯示有關所選項目的信息,並突出顯示所選的行。這是我有:用Knockoutjs顯示已點擊的項目

http://jsfiddle.net/blankasaurus/qUydu/6/

1)當我嘗試設置CurrentDisplayThing = item我想要它做的事(這是更新顯示分度,選擇的項目),它不這樣做。我也試過$.extend(CurrentDisplayThing, item);我會不得不單獨設置每個屬性或其他?我在我的真實項目中有大約30個。

2)我想弄清楚的另一件事是如何突出顯示我剛剛點擊正確的方式使用Knockout的行。

PS:對於什麼,我實際上做我現在用的是映射插件兩者ThingsCurrentDisplayThing從我通過我的.NET模型來我假設我有什麼在JS小提琴鏡像方式映射會設置此?

回答

4

這裏是一個小提琴解決了這兩個問題。

http://jsfiddle.net/johnpapa/6FCEe/

1)選擇的項目屬性實際上是可觀察到的(這是一個功能)。所以值必須傳遞到觀察的功能是這樣的:

self.model.CurrentDisplayThing(item); 

2)突出的行可以通過CSS在淘汰賽結合來完成。 css綁定接受一個具有css類名稱(例如:selected)和一個表達式(ex:isSelected)的對象。在下面的示例中,當isSelected爲true時,該類將被應用,否則將被刪除。

<tr data-bind="click: $root.selectThing, css: { selected: isSelected} "> 

查看完整示例的小提琴。

1

你不能只分配淘汰賽觀測使用像

CurrentDisplayThing = item 

代碼,你不能$.extend他們要麼,因爲在那做任務也結束。

相反,你必須使用函數語法:

self.model.CurrentDisplayThing(item); 

同樣,你必須使用函數語法訪問時:

self.model.CurrentDisplayThing().ID 

工作例如:http://jsfiddle.net/HUjau/1/

+0

Bam。 http://jsfiddle.net/blankasaurus/qUydu/8/謝謝! – Jason 2012-01-12 16:16:15

相關問題