Knockout.js 在淘汰3中,更改不可见值的类的首选方法是什么?
我有一个可观察的数组Knockout.js 在淘汰3中,更改不可见值的类的首选方法是什么?,knockout.js,knockout-3.0,Knockout.js,Knockout 3.0,我有一个可观察的数组项。生成一个无序列表,形成nav。我想将类active应用于单击的项目,并将其从所有其他项目中删除。我尝试设置一个静态的css:{active:true},但是由于active不是项的真实属性,我不确定如何实现它 我称之为不可观察的值,因为我不想将active类与items数组关联,只想根据需要在DOM上更改它 <ul id='nav' data-bind="foreach: items"> <li data-bind="css: {selected
项
。生成一个无序列表,形成nav。我想将类active
应用于单击的项目,并将其从所有其他项目中删除。我尝试设置一个静态的css:{active:true}
,但是由于active
不是项的真实属性,我不确定如何实现它
我称之为不可观察的值,因为我不想将active
类与items数组关联,只想根据需要在DOM上更改它
<ul id='nav' data-bind="foreach: items">
<li data-bind="css: {selected: false}">
<a data-bind="text: name, click: click_nav"></a>
</li>
</ul>
您可以将当前“活动”项存储在
AppViewModel
的可观察属性中,您可以在单击导航功能中进行设置
function AppViewModel() {
this.items = ko.observableArray([
{ name: 'Course 1' },
{ name: 'Course 2' },
{ name: 'Course 3' }
]);
this.active = ko.observable();
this.click_nav = function(item){
this.active(item);
};
}
您可以将当前项($data
)与css
绑定中的活动项进行比较:
<ul id='nav' data-bind="foreach: items">
<li data-bind="css: {selected: $parent.active() == $data}">
<a data-bind="text: name, click: $parent.click_nav.bind($parent)"></a>
</li>
</ul>