2012-01-12 75 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

相关问题