9

我正在使用淘汰赛 js 来设置跨度值。

HTML 代码

<span id="spnQStreamChat" data-bind="text: $data.OnLineUserName"></span>

这工作正常并在 UI 上显示用户名。

我正在尝试从 js 文件中获取该值。通过使用下面的代码

alert($(this).attr('data-bind'));

这是类似以下文本的服务结果: $data.OnLineUserName。我想要我分配的用户名。

在 UI 中显示 Bhagirathi,但在 js 中显示数据绑定中存在的内容

如何在js文件中获取名称(意思是:Bhagirathi)

请帮助解决这个问题

提前致谢

[编辑]

$(document).on("click", ".btn-mini", function (e) {
    alert(ko.contextFor($('.btn-mini')[0]).$data.OnLineUserName);
    try {
        var connectionId = chatHub.server.getUserConnectionId($(this).attr('data-bind').username, sessionUserName);
    }
    catch (e) {
        //error
    }
});

[/编辑]

4

1 回答 1

12

您可以通过以下方式获取元素的淘汰赛上下文

ko.contextFor($('#spnQStreamChat').get(0))

这将返回一个像

ko.bindingContext {$parents: Array[1], $root: ViewModel, ko: Object, $data: SomeObject, $parentContext: ko.bindingContext…}

其中 $data 是您的 $data 对象。因此,要获得名称,您需要类似

ko.contextFor($('.button.btn.c_btn').get(0)).$data.OnLineUserName()

当您需要获取 $data 对象时,这种方式更有用。否则,您可以使用 jQuery 获取跨度的“文本”

于 2013-08-02T14:32:33.770 回答