我正在使用ag-grid,我需要在单元格中添加一些自定义链接,并希望在其上调用ng-click功能。这是我的代码
var columnDefs =[
{headerName: "ID", field: "id"},
{headerName: "Template Name", field: "user_template_name"},
{headerName: "Screen", field: "screen_name"},
{headerName: "Last Uploaded", field: "created_at"},
{headerName: "Manage", cellRenderer: createCustomLinks }
];
var gridOptions = {
angularCompileRows:true,
columnDefs: columnDefs,
rowData: null,
enableSorting: true,
enableColResize: true,
};
var gridDiv = document.querySelector('#myGrid');
new agGrid.Grid(gridDiv, gridOptions);
gridOptions.columnApi.setColumnVisible('id', false);
gridOptions.api.sizeColumnsToFit();
function createCustomLinks(params) {
var cellHtml = '<a ng-click="openTemplateID('+params.data.id+')">Open</a>';
var domElement = document.createElement("span");
domElement.innerHTML = cellHtml;
params.$scope.openTemplateID = function(id){
console.log(id);
}
return domElement;
};
我收到以下错误
TypeError: _this.$scope is null
setTimeout(function () { _this.$scope.$apply(); }, 0);
ag-grid.js (line 7415, col 39)
Error: this.parentScope is null
RenderedRow</RenderedRow.prototype.createChildScopeOrNull
如果我做错了,请指导我。 谢谢。
答案 0 :(得分:1)
当使用ag-grid和angularJS时,不要这样做:
var gridDiv = document.querySelector('#myGrid');
new agGrid.Grid(gridDiv, gridOptions);
而是在HTML中使用
<div ag-grid="gridOptions"></div> // don't forget having grdOptions bind to $scope
仅此一项就会触发一个新问题:columnApi和api在执行时将是未定义的。要解决此问题,您必须使用onGridReady回调:
gridOptions.onGridReady = function(params){
gridOptions.columnApi.setColumnVisible('id', false);
gridOptions.api.sizeColumnsToFit();
}
答案 1 :(得分:1)
我曾经遇到过这个问题。我们需要在网格选项中定义它。将 angularCompileRows 设置为true可以解决此问题
$scope.gridOptions = {
columnDefs: $scope.columnDefs,
rowData: $scope.rowData,
// all other options
angularCompileRows: true
};