2

我如何从其他文件中调用我的各种“定义”函数,而不是拥有一个包含一大堆“定义”的巨型 js 文件?

我一直在复制这些示例,但仍然无法使其工作:

这是我到目前为止所拥有的:

main.js

require.config({
    baseUrl: '',
    paths: {
       jquery: '../libraries/jquery-1.10.2.min',
       simControlView: '../javascripts/simControlView'
    }
});

require(['jquery','loadPage'], function( $,loadPage) 
{ 
        loadPage();
});

define('loadPage', ['jquery'], function($)
{
    var simControlView = require(['./simControlView']);
    return function()
    {
         simControlView.showSimControlView(); //having problem here

    };
});

simControlView.js

define(['jquery'], function ($) {
    return {
        showSimControlView: function () {
            console.log("Hi!!");
        }
    }
});

这是我得到的错误:

未捕获的类型错误:对象函数 d(e,c,h){var g,k;f.enableBuildCallback&&(c&&H(c))&&(c.__requireJsBuild=!0);if("string"===typeof e){ if(H(c))return v(A("requireargs", " Invalid require call "),h);if(a&&s(N,e))return Ne;if(j.get)return j.get(i ,e,a,d);g=n(e,a,!1,!0);g=g.id;return!s(r,g)?v(A("未加载",'模块 名" '+g+'"尚未加载上下文:'+b+(a?"":"。使用 require([]) "))):r[g]}K();i.nextTick(function( ){K();k=q(n(null,a));k.skipMap=f.skipMap;k.init(e,c,h,{启用:!0});C()}); return d}没有方法“showSimControlView”

看到我做错了什么吗?任何帮助表示赞赏!

4

1 回答 1

3

尝试将所有依赖项移动到您传递给的依赖项列表中define()

此外,排序可能很重要。即define()模块的 可能需要在require()需要它的之前出现(谈论'loadPage'模块)。

此外,如果您的paths配置调用一个模块'simControlView',那么它需要被称为'simControlView',而不是'./simControlView'

例如:

define('loadPage', ['jquery', 'simControlView'], function($, simControlView) {
    return function() {
         simControlView.showSimControlView();
    };
});

require(['jquery', 'loadPage'], function($, loadPage) {
    loadPage();
});
于 2013-09-19T22:08:46.713 回答