我想绑定(bind)LI / DIV的类。我正在使用敲门.js。我不知道如何使它工作。这是我的代码:

<div id="users-list2" class="span8">
        <div class="tabbable">
            <!-- Only required for left/right tabs -->
            <ul class="nav nav-tabs" data-bind="foreach: conversations">
                <li data-bind="click: function () { $root.tabClick(username); }, attr:{ 'class': cls}" style="float:left">
                <a class="user-box-name"
                     data-bind="text: username, attr:{ 'href':'#'+ username }, event: { contextmenu: $root.closeTab }"></a>
                </li>
            </ul>
            <div class="tab-content" data-bind="foreach: conversations">
                <div data-bind="attr:{ 'id': username, 'class': 'tab-pane ' + cls}">
                    <div id="chat-list" class="span12" data-bind="foreach: messages">
                        <ul>
                            <li>
                                <div class="chat-listitem-username" data-bind="text: username">
                                </div>
                                <div class="chat-listitem-message" data-bind="html: content">
                                </div>
                                <div class="chat-listitem-timestamp" data-bind="text: timestamp.toLocaleTimeString()">
                                </div>
                            </li>
                        </ul>
                    </div>
            </div>

和viewModel:
chatR.conversation = function (username) {
var self = this;
self.messages = ko.observableArray();
self.username = username;
self.test = function (x) { alert(x.username) };
self.cls = "";
}

我想在单击特定选项卡时将cls更改为“ Activity ”,并将所有其他cls更改为“”。没用我究竟做错了什么?诸如“tabbable”和“nav”的类由bootstrap.js定义。

编辑:
这就是我要更改cls的方式:
self.tabClick = function (username) {
    self.currentConversation = username;
    for (i = 0; i < self.conversations().length; i++) {
        if (self.conversations()[i].username == username) {
            self.conversations()[i].cls = "active";
        }
        else {
            self.conversations()[i].cls = "";
        }
    }
}

编辑2:
评论工作的变化,但是我还有另一个问题。 Li的类(class)为“活跃”,但DIC获得了:
<div id="aaa_1" class="tab-pane function d(){if(0<arguments.length)
{if(!d.equalityComparer||!d.equalityComparer(c,arguments[0]))d.H(),c=arguments[0],d.G();return this}b.r.Va(d);return c}"
data-bind="attr:{ 'id': username, 'class':'tab-pane '+cls}">

怎么了

最佳答案

发布详细信息作为答案。

第一步是使cls属性成为可观察的,并将代码更改为,并相应地更改代码self.conversations()[i].cls("active");self.conversations()[i].cls("");
对于第二次编辑中。

您需要输出cls的值,而不是整个cls的值

所以改变这个

<div data-bind="attr:{ 'id': username, 'class': 'tab-pane ' + cls}">


<div data-bind="attr:{ 'id': username, 'class': 'tab-pane ' + cls()}">

关于javascript - 绑定(bind)到敲门.js中的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14292742/

10-10 18:35
查看更多