【问题标题】:KnockoutJS: Event objectKnockoutJS:事件对象
【发布时间】:2011-07-14 14:43:33
【问题描述】:

此问题与KnockoutJS: Tracking menu clicks 有关。我已经能够通过提供 id 值来判断单击了哪个菜单。我需要更改此模型并使用 event.target 来获取更多信息。我试过this,但它似乎不起作用。我还创建了全局函数menuClicked

var viewModel = {};
function menuClicked(event) {
    var id = ($(event.target).tmplItem().data).Id;
    var isActive = viewModel.menuActive();
    if (!isActive || viewModel.currentMenu() == id)
        viewModel.menuActive(!isActive);
    viewModel.currentMenu(id);
}
$(function () {
    $.ajax({
        url: 'console.asmx/Initialize',
        type: "POST",
        cache: false,
        contentType: "application/json; charset=utf-8",
        data: "{}",
        dataType: "json",
        success: function (data) {
            viewModel = data.d;
            viewModel.menuActive = ko.observable(false);
            viewModel.currentMenu = ko.observable(0);

            ko.applyBindings(viewModel);
        }
    });
});

并将超链接绑定到该方法:

<a class='${ Class }' data-bind='click: menuClicked'>${ Name }</a>

但是每次我点击超链接时,事件对象都是空的/未定义的。我要做的是检索用于呈现超链接的对象,如this example 中所示,但我的超链接没有ID。

非常感谢任何帮助。

【问题讨论】:

    标签: knockout.js jquery-templates


    【解决方案1】:

    事件对象被传递给点击绑定,但仅在最新的 Knockout 代码中(所以在 1.12 版本之后)。它将在 1.2 版本中,应该很快就会发布。

    您可以在这里获取最新代码:https://github.com/SteveSanderson/knockout/tree/master/build/output

    相当稳定。希望这会有所帮助。

    【讨论】:

    • 太棒了!再次感谢您!
    猜你喜欢
    • 2013-09-11
    • 2014-02-02
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 2013-11-18
    • 2016-05-22
    相关资源
    最近更新 更多