我对 Knockout.js 还很陌生,所以我可能只是遗漏了一些东西。我正在尝试创建一组用作按钮的 div,其中它们的“选定”状态反映了数组中项目的子值。
看到这个小提琴: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 的初始显示是正确的。似乎我可以使单击事件更改可观察数组中的值而不会出现问题。但是,显示的 div 不会更改 css 类以响应此问题。
我意识到作为数组中的项目的对象的子对象本身不是可观察的。但是,我对 valueHasMutated() 的调用不应该强迫这个问题吗?这也可能不是完成该行为的最优雅的方式。
有人想帮助学习 javascript 的人吗?