2011-03-13 62 views
0

此問題與KnockoutJS: Tracking menu clicks有關。我已經能夠通過提供一個id值來判斷哪個菜單被點擊了。我需要更改此模型並使用event.target獲取更多信息。我試過this,但它似乎沒有工作。我還創建了全球功能menuClickedKnockoutJS:事件對象

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 /未定義。我想要做的是檢索用於呈現超鏈接的對象,如this example,除非我的超鏈接沒有ID。

任何幫助,非常感謝。

回答

0

事件對象被傳遞給點擊綁定,但僅在最新的Knockout代碼中(因此在1.12版本之後)。它將在1.2版本中發佈,應該在太久之前發佈。

您可以在這裏得到最新的代碼:https://github.com/SteveSanderson/knockout/tree/master/build/output

這是相當穩定的。希望這可以幫助。

+0

太棒了!再一次感謝你! – 2011-03-13 21:54:46