我有这个javascript文件结构:
class RandomCtrl {
constructor(randomService) {
this.randomService = randomService;
...
}
$onInit() {
getData.call(null, this);
}
...
}
function getData(RandomCtrl) {
...
}
function getChart(data) {
if (!data) {
return;
}
const chartOptions = getWeekHourlyOptions(data);
const allCols = [].concat(chartOptions.dataColumns);
allCols.push(["x"].concat(_.map(chartOptions.xAxis, element => moment(element).valueOf())));
const xVals = xAxisValues(chartOptions.xAxis);
...
}
...
RandomCtrl.$inject = ['randomService'];
export const Random = {
bindings: {
data: '<',
siteNames: '<'
},
templateUrl: randomPageHtml,
controller: RandomCtrl
};
我希望将allCols
的值设为变量。我尝试在return allCols;
方法的末尾添加getChart()
并在$onInit()
内调用它。
尝试了几种方式:
const wow = getChart();
const wow = getChart(this);
const wow = getChart.call(null, this);
所有人都说哇未定义。知道如何解决这个问题吗?
答案 0 :(得分:0)
尝试下面的代码,其中addOneTimeListener包装器将在绘制完表格时执行它,它应该在创建表之后但在调用draw之前执行。
google.visualization.events.addOneTimeListener(table, 'ready', function () {
var tmpData = table.getChart();
// ...
});