2012-07-22 45 views
12

我这个尝试之一:如何在knockout.js中创建条件绑定?

<div data-bind="attr: {class: itemSelected? 'selected' : 'unselected' }"></div> 

但它不工作:)

+1

你试过了itemSelected和“?”之间的空格吗? attr:{class:itemSelected? 'selected':'unselected'} – 2012-07-22 18:15:15

+0

在“knockout.js”中,“空格”是否有意义? – ozz 2012-07-22 19:35:29

+0

当它从变量中分出问号时它会执行。 – Tyrsius 2012-07-22 20:32:55

回答

21

假设你有这样的:

function viewModel() { 
    this.itemSelected = ko.observable(true); 
} 
ko.applyBindings(new viewModel());​ 

添加()后itemSelected获得的电流值可观察到,您可以与三元运算符一起使用:

<div data-bind="attr: { class: itemSelected() ? 'selected' : 'unselected' }"></div>​

http://jsfiddle.net/RK7Ty/


如果没有需要分配未选定类非选择的状态,你可以这样做,而不是:

<div data-bind="css: { selected: itemSelected }"></div>​ 

http://jsfiddle.net/RK7Ty/1/

0

继为我工作,我同时使用css和id属性,对于我来说,如果css属性不是第一个属性,那么就不会工作,所以请将css属性保留为您的第一个属性。

<div class="panel-collapse collapse" data-bind="css:{in:$index()==0}, attr: { id:'collapse'+$index()} "> 

... 
... 
... 

</div>