我的代码(在控制器上)创建一个角度 ui-grid -
function getData() {
$scope.myData = [];
$scope.columnDefs = [];
$scope.gridOptions = {
data: 'myData',
useExternalSorting: true,
columnDefs: 'columnDefs',
};
valuesService.getValues().success(function (data) {
$scope.columnDefs = getColumnDefs(data.DataColumns);
$scope.myData = data.Data;
if (!$scope.$$phase) $scope.$apply();
}).error(function (error) {
$scope.status = 'Unable to load customer data: ' + error.message;
});
}
function getColumnDefs(columns) {
var columnDefs = new Array();
for (var i = 0; i < columns.length; i++) {
columnDefs.push({
field: columns[i].Name,
displayName: columns[i].Caption,
width: columns[i].Width,
hasChart: columns[i].HasChart,
cellTemplate: "ui-grid-cell-template.html"
});
}
return columnDefs;
}
因此,在我的控制器中,我调用了将使用并创建数组getData()
来填充网格的函数gridOptions
columnDefs
正如您在columnDefs
我cellTemplate
在网格中使用的那样,这就是我的ui-grid-cell-template.html
样子 -
<div ng-if="isChartColumn(col)"> //This works
<div class="ngCellText column-chart-style">
<highchart id="chart2"
config="{{getColumnChartConfig(col.colIndex())}}"></highchart> //this does not work
</div>
</div>
所以我的网格显示数据列,其中一列有一个图表,它需要从控制器的$scope
对象中动态读取配置。这个动态图表配置对象将由getColumnChartConfig
控制器范围内的方法提供,其最简单的形式看起来像这样 -
//This function is not getting called
$scope.getColumnChartConfig = function (rowId) {
return someChartConfigObject;
}
你能否让我知道这是否是完成我想要做的事情的正确方法,如果是,那么为什么getColumnChartConfig
没有从我的网格中调用该方法cellTemplate
?有没有其他方法可以做到这一点?
提前致谢。