我使用Knockout.JS站點(http://jsfiddle.net/rniemeyer/QSRBR/)中的Paged Grid示例來構建網格。我宣佈像下面的網格模板內的點擊事件(點擊:goBackward): -使用knockout.js將單擊事件從一個視圖模型傳遞到另一個視圖模型
templateEngine.addTemplate("ko_negrid_navigation", "\
<div class=\"ko-grid-pageLinks\">\
<br/>\
<span><img src=\"/OCSENET/images/bluLeftNew.gif\" style=\"cursor:hand;\" alt=\"Backward\" data-bind='click: goBackward, visible: shouldShowBack' /></span>\
<span> </span>\
<span><img src=\"/OCSENET/images/bluRightNew.gif\" style=\"cursor:hand;\" alt=\"Forward\" data-bind='click: goForward, visible: shouldShowFwd' /></span>\
</div>");
現在我需要定義調用此網格視圖模型一個ViewModel內,而不是這個網格視圖模式它 - 這裏面goBackward方法自。當我這樣做時,事件不會觸發goBackward()。我打電話是從另一個TestViewModel網格如下:
/*----------------------------------------------------------------------*/
/* TEST View Model
/*----------------------------------------------------------------------*/
function TESTViewModel() {
var self = this;
self.iRowFrom = ko.observable(1);
self.iRowTo = ko.observable(5);
self.gridRowCount = ko.observable(5);
self.VM_AHISGrid;
self.GridItems = ko.observableArray([]);
//fnDesignGrid
self.fnDesignGrid = function() {
self.VM_AHISGrid = new ko.NEGrid.viewModel({
data: self.GridItems,
columns: [
{ headerText: "Address", rowText: "AHIS_Address" },
{ headerText: "City", rowText: "AHIS_Addr_City" },
{ headerText: "State", rowText: "AHIS_Addr_State" },
{ headerText: "Zip", rowText: "AHIS_Addr_Zip" }
],
pageSize: self.gridRowCount(),
gridName: 'ALST_NE_GRID'
});
}
// I want this method to be triggered.
self.goBackward = function() {
alert('I m Backward')
};
}
我試過這樣做,但它不起作用。如果我將這個方法全局放在任何視圖模型的外部,它會被調用,但是如果它在調用視圖模型中定義,那麼它不會。 –
你可以把東西放在jsFiddle中演示這個問題嗎?有一件事可以幫助,試圖瞭解綁定時「$ parent」和「$ root」的含義。可以很簡單,比如像''root.goBackward,blah:console.log($ root)''''''''''''' –
我的點擊綁定旁邊放置了一個假的綁定。我已經提供了一個jsFiddle作爲一個smaple。 http://jsfiddle.net/ksgsharma/98xaG/ –