<ul class="dropdown-menu color-menu" aria-labelledby="colorLabel" data-bind="foreach: $parent.colors">
<li data-bind="attr: { class: color },event: {click: $root.changeColor($parent.id,color)}"> </li>
</ul>
var SettingModel = function () {
self.colors = ko.observableArray([
{ color: 'bg-green' },
{ color: 'bg-red' },
{ color: 'bg-yellow' },
{ color: 'bg-aqua' }
]);
self.changeColor = function (id, color) {
console.log(id() + "|" + color)
}
}
在页面加载的时候会自动执行click,每个元素对应的li元素都执行一遍changeColor。不是应该点击了之后再执行吗?
后面加了
()
就会执行……若果要实现带参数的方法,可以考虑匿名的写法。