2013-06-24 72 views
2

我使用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>&nbsp;</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') 
    }; 

} 

回答

1

好的,我修好了。很簡單,只需定義調用viewmodel的方法如下,它的作用就像魅力。

self.NEGridViewModel.goBackward = function() { 
     alert('I m Backward') 
    }; 
0

如果您的網格是您的視圖模型的孩子,然後在您的尋呼機模板,你需要做這樣的事情click: $parent.goBackwardclick: $root.goBackward綁定針對功能在更高的範圍內生活。

+0

我試過這樣做,但它不起作用。如果我將這個方法全局放在任何視圖模型的外部,它會被調用,但是如果它在調用視圖模型中定義,那麼它不會。 –

+0

你可以把東西放在jsFiddle中演示這個問題嗎?有一件事可以幫助,試圖瞭解綁定時「$ parent」和「$ root」的含義。可以很簡單,比如像''root.goBackward,blah:console.log($ root)''''''''''''' –

+0

我的點擊綁定旁邊放置了一個假的綁定。我已經提供了一個jsFiddle作爲一個smaple。 http://jsfiddle.net/ksgsharma/98xaG/ –

相關問題