KnockoutJS:事件对象

时间:2011-03-13 20:34:37

标签: knockout.js jquery-templates

此问题与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>

但是每次单击超链接时,事件对象都为null / undefined。我要做的是检索用于呈现超链接的对象,如this example所示,除了我的超链接没有id。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

事件对象传递给click绑定,但仅在最新的Knockout代码中传递(因此在1.12版本之后)。它将在1.2发布中,应该在不久之前发布。

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

非常稳定。希望这会有所帮助。