此问题与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。
非常感谢任何帮助。
答案 0 :(得分:0)
事件对象传递给click绑定,但仅在最新的Knockout代码中传递(因此在1.12版本之后)。它将在1.2发布中,应该在不久之前发布。
您可以在此处获取最新代码:https://github.com/SteveSanderson/knockout/tree/master/build/output
非常稳定。希望这会有所帮助。