我有以下HTML片段:
<table class="answerGrid" data-bind="foreach: rows">
<tr data-bind="foreach: $data">
<td>
<button data-bind="click : $root.onAnswerClick, css: isSelected" type="button">
<div data-bind="html: $data.text" style="height: 100%"></div>
</button>
</td>
</tr>
</table>我要做的是通过isSelected computed函数动态设置button元素的class属性:
var Answer = function () {
var self = this;
self.id = "";
self.text = "";
self.selected = ko.observable(false);
self.isSelected = ko.computed(function () {
return self.selected() ? "selected-answer" : "answer";
}, self);
};该函数正在执行中,我检查了由于尚未选择Answer而返回了文本"answer“。但是,当我查看输出的HTML时,它看起来如下所示:
<td>
<button data-bind="click : $root.onAnswerClick, css: isSelected" type="button" class="0 1 2 3 4 5 startsWith">
<div data-bind="html: $data.text" style="height: 100%">4-7 days</div>
</button>
</td>我完全不明白为什么KO要将class属性设置为"0 1 2 3 4 5 startsWith“。
有谁能帮帮我吗?
发布于 2012-11-18 05:20:28
我将使用一种不同的方法:
<button data-bind="css: { 'answer': !selected(), 'selected-answer': selected() }" type="button">
<span>Testing</span>
</button>所以我根本不打算使用computed函数,而是直接访问答案的selected属性。我通过这个问题找到了这个技巧:
https://stackoverflow.com/questions/13434716
复制相似问题