Well, Github answered my question:
https://github.com/angular-ui/ng-grid/issues/2228#issuecomment-71912850
My mistake was to not use external areas and try to solve the problem only with ng-dblclick.
The code should look like this:
On the controller:
$scope.gridHandlers = { onDblClick : function(row) { var url = '//google.com'; $window.open(url, "_blank", "height=600,width=800,toolbar=no,location=no,menubar=no,titlebar=no"); } } $scope.myGridOptions = { showFooter: false, enableSorting: true, multiSelect: false, enableFiltering: true, enableRowSelection: true, enableSelectAll: false, enableRowHeaderSelection: false, enableGridMenu: true, noUnselect: true, onRegisterApi: function (gridApi){ $scope.gridApi = gridApi; }, rowTemplate: "<div ng-dblclick=\"getExternalScopes().onDblClick(row)\" ng-repeat=\"(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name\" class=\"ui-grid-cell\" ng-class=\"{ 'ui-grid-row-header-cell': col.isRowHeader }\" ui-grid-cell ></div>" }
In view:
<div id="myGrid" ui-grid="myGridOptions" ui-grid-selection ui-grid-resize-columns class="gridTable" external-scopes="gridHandlers"></div>
Update for ui-grid v3.0.0-rc.21:
Given that externalScopes is no longer supported, now the rules are appScopeProvider.
In view:
<div id="myGrid" ui-grid="myGridOptions" ui-grid-selection ui-grid-resize-columns class="gridTable" ></div>
In the controller:
$scope.myGridOptions = { showFooter: false, enableSorting: true, multiSelect: false, enableFiltering: true, enableRowSelection: true, enableSelectAll: false, enableRowHeaderSelection: false, enableGridMenu: true, noUnselect: true, onRegisterApi: function (gridApi){ $scope.gridApi = gridApi; }, appScopeProvider: { onDblClick : function(row) { var url = '//google.com'; $window.open(url, "_blank", "height=600,width=800,toolbar=no,location=no,menubar=no,titlebar=no"); } }, rowTemplate: "<div ng-dblclick=\"grid.appScope.onDblClick(row)\" ng-repeat=\"(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name\" class=\"ui-grid-cell\" ng-class=\"{ 'ui-grid-row-header-cell': col.isRowHeader }\" ui-grid-cell ></div>" }
Here is my Plnkr example using a modal popup (made using angular -ui-bootstrap):
http://plnkr.co/edit/cq7s9lKn90xTVgNxIC6b?p=preview
Please note that if you are using a newer version of ui-bootstrap, you will need to rename $ modal in the above plunkr to $ uibModal.