0

剣道データグリッドディレクティブを使用し、グリッド設定オプションのテンプレートを持つTypeCtrl ES6クラスの角度コントローラーがあります。グリッドのテンプレートでは、メソッドをTypeCtrlクラスから取得します。テンプレートの行内のスパンにonclickイベントまたはng-clickイベントをアタッチする必要があります。ただし、Clickでトリガされる必要がある機能は、TypeCtrlクラスに属します。どのように私は剣道グリッドのdataboundイベント内でTypeCtrlのコンテキストを取得できますか?私はここでグリッドデータバインドイベントのonclick/ng-clickイベントを添付

は私が持っているものである私がいることがわかり、私はデータバインドされたイベント内

//Grid options defined in Class TypeCTrl along with openSub method 

    class TypeCtrl{ 
     constructor() {} 
     $onInit() { 
      this.gridOptions = { 
      name: 'test', 
      dataBound: function(e) { 
       //Find the span and on click , attach the typectrl controller's opensub method 
       let grid = this 
       let item = grid.tbody.find('#testClick'); 
       let value = item.innerHTML; 
       item.on('click', this.openSub(value); 

      } 
      columns: [{ 
        field: 'subscriptionName', 
        hidden: true, 
        groupHeaderTemplate: function(dataItem) { 
         let temp; 
         let sname = dataItem.value; 
         if (sname) { 
          temp = '<span id="testClick">' + sname + '</span>'; 
         } 
         return temp; 
        }.bind(this) 
       }, { 
        field: 'name',//Todo: show icons 
        title: 'name' 
       }, { 
        field: 'version', 
        title: 'version' 
       }] 
      } 
     } 

      openSub(name) { 
       alert('thisis a box'); 
      } 
     } 

     TypeCtrl.$inject = ['$scope']; 

    angular.module('core').controller('TypeCtrl', TypeCtrl); 

    export default TypeCtrl; 

をtehのコントローラメソッドにアクセスすることができますどのようにように、私に知らせてください、ここで剣道グリッドに「これ」のポイントことがわかりspanタグをクリックすると、このコンテキストは失われ、opensubメソッドは呼び出されません。行テンプレートをクリックしたときにopensubメソッドにアクセスすることにしました。これはdataBound関数で行うことができますか?

またはその他の方法?

答えて

0

一般的なアプローチは、AngularJSアプリをコンポーネントで構築することです。グリッドを含むコンポーネントを作成すると、ng-click="$ctrl.openSub()"というテンプレートからopenSub()メソッドを呼び出すことができます。この場合、メソッドのthisTypeCtrlを指します。

+0

はい、要素がテンプレートで動的に生成されるため、このコンテキストはコントローラを取得していません。私はすでにテンプレート内に "this"を持っていました。 Howverは角度が「これ」について知らないので、 – looneytunes

関連する問題