如何在模块中调用javascript函数

时间:2016-01-29 17:53:40

标签: javascript html require

我获得了generateChart的未捕获的ReferenceError。

我在Chart.js中定义了generateChart,在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>
&#13;
&#13;
&#13;

require.config.js

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

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

&#13;
&#13;
define([
    'd3',
    'Chart'
], function (d3, Chart) {
    'use strict';


	d3.csv("sp500.csv", function(data) {

  	d3.select("#example")
      	.datum(data)
    	.call(generateChart());
	});

});
&#13;
&#13;
&#13;

我定义generateChart

的Chart.js

&#13;
&#13;
define([
    'd3'
], function (d3) {
    'use strict';

    generateChart = function() {
    };

 });
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

我不是require.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');
        }
    }

 });