Cell template in ng-grid

kani picture kani · Aug 1, 2014 · Viewed 8.4k times · Source

I am using cell template property of ng-grid. I am defining one function in the directive. Within the same directive I am defining my grid-options. Here is the code:

data: 'mydata',
columnDefs: [

{field:'Timeout', displayName:'Delay', cellTemplate: '<a href="" 
ng-click= "Report(Alert,Key,1000,1,1);"><div class=\"ngCellText\">{{row.getProperty(col.field)}}</div></a>'}   
        ]

and function Report is also defined within same directive.

ng-click is working whenever it gets clicked. The function is getting called but whatever the input variable I am passing (Alert and Key) is not passing to the function whereas the rest three parameters 1000,1,1 are getting passed. Alert is the hard-coded string what I wants to pass. Key is one of the array of integer values in 'mydata'. I checked by using alert for these 2 specific values in function and it is showing UNDEFINED.

Please help in calling the function correctly. Thanks in advance.

Answer

mainguy picture mainguy · Aug 3, 2014

Do you want something like this:

  $scope.Report=function(msg,key,v1,v2,v3){
    //use v1, v2, v3 for whatever you like
    alert(msg+':'+key);
  };

  $scope.gridOptions = {
    data: 'myData',
    columnDefs: [
      {
        field: 'name',
        displayName: 'Delay',
        cellTemplate: '<a href="" ng-click= "Report(\'Alert\',row.entity.age,1000,1,1);"><div class=\"ngCellText\">{{row.getProperty(col.field)}}</div></a>'
      }, {
        field: 'age'
      }
    ]
  };

Note that the hardcoded string (msg) must be put in escaped quotes. I used age as example for a key. Since its a numeric value in this example, you don't need the quotes.

Here is a Plunker