首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么KnockoutJS将类属性设置为"0 1 2 3 4 5 startsWith"?

为什么KnockoutJS将类属性设置为"0 1 2 3 4 5 startsWith"?
EN

Stack Overflow用户
提问于 2012-11-18 04:59:03
回答 1查看 240关注 0票数 2

我有以下HTML片段:

代码语言:javascript
运行
复制
<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属性:

代码语言:javascript
运行
复制
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时,它看起来如下所示:

代码语言:javascript
运行
复制
<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“。

有谁能帮帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-18 05:20:28

我将使用一种不同的方法:

代码语言:javascript
运行
复制
<button data-bind="css: { 'answer': !selected(), 'selected-answer': selected() }" type="button">
    <span>Testing</span>
</button>​

所以我根本不打算使用computed函数,而是直接访问答案的selected属性。我通过这个问题找到了这个技巧:

KnockoutJS css binding != true

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13434716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档