我对Knockout.js相当陌生,所以我可能只是缺少一些东西。我正在尝试创建一组按钮,其中的'selected'状态反映了数组中项目的子值。将css类绑定到Observable Array item.chosen与knockout.js的值
见本小提琴:http://jsfiddle.net/bleiddyn/RepnY/
摘录:
$('.tag-cell').click(function() {
var ele = event.srcElement.textContent;
var match = ko.utils.arrayFirst(self.Tags(), function(item) {
if (ele === item.title) {
item.chosen = !item.chosen;
return true;
}
return false;
});
match.chosen = true;
self.Tags.valueHasMutated();
});
的div的初始显示是正确的。看来我可以使click事件更改observable数组中的值而不会出现问题。显示的div不会改变css类来响应这个。
我意识到,作为数组中项目的对象的孩子本身并不是可观察的。但是,我不应该呼吁valueHasMutated()强制该问题?这可能也不是完成行为的最优雅的方式。
任何人都想帮助一个学习JavaScript的人出去?
两个优秀的答案,谢谢!我选择安德鲁的主要原因是我从中学到了更多关于淘汰赛的信息,但都是不错的选择。我会使用RP的方法来获得更通用的“任何可以选择的”场景,但是我认为将它作为单个对象可能更适合我的使用。 – Chris