2017-12-20 54 views
1

オンデマンドグリッド内にdijitフォームチェックボックスがあります。 Ondemandグリッドはdojoウィジェットの一部です。私はチェックボックスの変更イベント内のウィジェット内の関数の1つを呼びたいと思いますが、私はウィジェットへの参照を取得することはできません。ここに私のコードです:dijitの内部から呼び出される親ウィジェット関数チェックボックス変更関数dgrid内でlopcated

TicketUnMarkedSet: function (GridData) { 

     //set the unmarked ticket information 
     gridStore = new Memory({ data: GridData, idProperty: "ID" }); 
     grid = new (declare([OnDemandGrid, DijitRegistry]))({ 
      store: gridStore, 
      columns: { 
       CheckedOut: { 
        label: "CO", 
        renderCell: function (object, cell) { 
         var CO = true; // check the checked out check box based on data from db 
         if (object.CheckedOut == "No") { 
          CO = false; 
         } 
         var cellContent = domConstruct.create("div", {}); 
         var cbox = new CheckBox({ 
          checked: CO, 
          name: "idBox" 
         }); 
         cbox.placeAt(cellContent); 
         on(cbox, "change", function (evt) { 
          var Staff = "No"; 
          if (evt == true) {//check box is checked, flag ticket as checked out 
           Staff = cookie("LoggedInAs") 
          } 

         this.CheckOutTicket(Staff);//how to call CheckOutTicket function (this is the checkbox) 

         }); 
         return cellContent; 
        } 
       }, 
    ..more columns 
}, 
CheckOutTicket: function (Staff){ 
    alert(Staff); 
} 

私はCheckOutTicket関数への参照を取得できますか?

ピート

答えて

1

おかげで私は、最適なソリューションを回避策を見つけましたが、そうでないかもしれません。 postCreateイベントでは、ウィジェットを参照するグローバル変数を定義し、その変数を使用してチェックボックスの変更イベント内から関数を呼び出します。

+0

私は同じアプローチに従っています –

0

dojo/topicを使用して希望を得ることをお勧めします。

on(cbox, "change", function (evt) { 
    var Staff = "No"; 
    if (evt == true) {//check box is checked, flag ticket as checked out 
     Staff = cookie("LoggedInAs") 
    } 

    topic.publish("CheckOutTicket", Staff); 
}); 

そしてどこか親ウィジェットで、すなわちのためのPostCreate

this.own(topic.subscribe("CheckOutTicket", this.CheckOutTicket)); 

今、あなたは子ウィジェットに親からハンドラを渡すことを気にし、グローバル変数を使用する必要はありません。

関連する問題