如何在模块中调用javascript函数

How to call javascript function in module

本文关键字:调用 javascript 函数 模块      更新时间:2023-09-26

我得到一个未捕获的引用错误 for generateChart。

我在 Chart 中

定义了 generateChart.js它在 require.config.js 中引用。

我是javascript的新手,需要所以这是一个新手问题。

这是我的代码:

主 HTML 文件:

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<body>
<p id="example">
<script src="js/require.config.js"></script>
<script data-main="js/config.js" src="js/lib/require.js"></script>
</body>

require.config.js

var require = {
    paths: {
        'd3': 'lib/d3',
        'Chart' : 'Chart'
    }
};

config.js包含主入口点和对 generateChart 的未引用调用

define([
    'd3',
    'Chart'
], function (d3, Chart) {
    'use strict';
	d3.csv("sp500.csv", function(data) {
  	d3.select("#example")
      	.datum(data)
    	.call(generateChart());
	});
});

和图表.js我定义生成图表

define([
    'd3'
], function (d3) {
    'use strict';
    generateChart = function() {
    };
 });

我不需要.js用户,但看起来依赖项已传递到您在define中指定的函数中。这样,下面代码中的第二个参数应该表示Chart模块,您需要使用它来调用generateChart

define([
    'd3',
    'Chart'
], function (d3, Chart) {    /// Second parameter is 'Chart'
    'use strict';

    d3.csv("sp500.csv", function(data) {
    d3.select("#example")
        .datum(data)
        .call(Chart.generateChart());   /// use it here to call generateChart()
    });
});

第二个问题是 Chart.js 应该返回一个对象,而不仅仅是定义一个函数:

define([
    'd3'
], function (d3) {
    'use strict';
    return {
        generateChart: function() {
           alert('here');
        }
    }
 });