2013-11-06 2 views
5

Как пройти {{row.getProperty(col.field)}} в ng-click? Что происходит, так это то, что идентификатор не распространяется, но сетка правильно отображает идентификатор.AngularJS + NG-Grid pass row.column.field в событие ng-click

код:

var app = angular.module('testing',['ngGrid']); 
app.config(['$locationProvider', function($locationProvider) 
{ 
     $locationProvider.html5Mode(true); 
}]);  

app.controller('TestCtrl',function($scope) 
{ 
     $scope.details = []; //whatever dummy data 
     $scope.loadById = function(id) 
     { 
      $window.location.href= 'newPage/?id='+id; 
     }; 

     $scope.gridOptions = 
     { 
      data: 'details', 
      columnDefs:[{field:'id',DisplayName:'id', 
       cellTemplate:'<div class="ngCellText" ng-class="col.colIndex()"><a ng-click="loadById({{row.getProperty(col.field)}})">{{row.getProperty(col.field)}}</a></div>' 
       }] 
     };  
}); 

ответ

14

Вы можете просто передать строку в нг щелкните, а не только значения, выведенного выражением двойной скобки.

Ваш CellTemplate становится этим

cellTemplate:'<div class="ngCellText" ng-class="col.colIndex()"><a ng-click="loadById(row)">{{row.getProperty(col.field)}}</a></div>' 

Ваша функция становится эта

$scope.loadById = function(row) { 
    window.console && console.log(row.entity); 
    $window.location.href= 'newPage/?id='+ row.entity.id; 
}; 
+0

очень хорошее спасибо. – Woot4Moo