我有一个knockout应用程序,其中我有一个功能,显示/隐藏页面上的元素,这取决于所选的选项。按钮,已被选中,以激活一个特定的切换将有一个'活动'类,使它'脱颖而出',这是明确可见的,这是所选的选项。我的问题是,我已经创建了一个knockout功能,以切换活动类,但它's触发了所有按钮的活动状态,而不是选定的按钮,我不知道为什么?
var viewModel = function(){
var self = this;
self.isActive = ko.observable(false);
self.toggleActive = function(data, event){
self.isActive(!self.isActive()); //toggle the isActive value between true/false
}
}
<button data-bind="click: toggleActive, css : {'activeStyle' : isActive}">Toggle Active</button>
<button data-bind="click: toggleActive, css : {'activeStyle' : isActive}">Toggle Active</button>
<button data-bind="click: toggleActive, css : {'activeStyle' : isActive}">Toggle Active</button>
3条答案
按热度按时间h5qlskok1#
这三个按钮只有一个视图模型,也就是说只有一个“isActive”标志,所有按钮都绑定到它。
相反,使用一个项目数组和一个foreach循环来呈现每一个项目。
HTML也被简化了:
注意使用
$parent
来访问父对象的binding context。当您在foreach循环中时,绑定上下文是从foreach循环中提取的单个项。通过访问$parent
,您可以“到达”包含items
属性的对象--在您的示例中,该对象是toggleActive
所在的视图模型。下面是一个更新的小提琴:http://jsfiddle.net/psteele/amMup/6/
cld4siwp2#
这是因为你把它们都束缚在同一个可观察的东西上。
http://jsfiddle.net/Kohan/fdzqJ/
个J
HTML格式
gcmastyq3#
另一个道: