1

(使用 requireJS、angularJS、angularAMD)

在我的 main.js 文件中,我有:

require.config({
    baseUrl: "js",
    paths: {
        'angular': 'libs/angularjs/angular.min',
        'angularAMD': 'libs/angularjs/angularAMD.min'
    },
    shim: {
        'angularAMD': ['angular']
    }
});

define(['angularAMD'], function (angularAMD) {
    var app = angular.module("app", []);
    app.controller("testCtrl", function ($scope) {
        $scope.message = "udało się!";
    });
    angularAMD.bootstrap(app);
    return app;
});

一切正常。但是当我将配置部分剪切到其他文件时,我得到了错误:

主.js:

require(['common'], function (common) {
    define(['angularAMD'], function (angularAMD) {
        var app = angular.module("app", []);
        app.controller("testCtrl", function ($scope) {
            $scope.message = "udało się!";
        });
        angularAMD.bootstrap(app);
        return app;
    });
});

common.js

require.config({
    baseUrl: "js",
    paths: {
        'angular': 'libs/angularjs/angular.min',
        'angularAMD': 'libs/angularjs/angularAMD.min'
    },
    shim: {
        'angularAMD': ['angular']
    }
});

我可以在 require 函数中使用定义吗?如果不是如何首先包含通用配置然后使用定义?

4

1 回答 1

2

我假设您的main.js文件是您赋予加载 RequireJSdata-main的标签上的属性的文件<script>,或者它是您的应用程序的主要入口点。改成main.js这样:

require(['common'], function (common) {
    require(['app']);
});

app.js并在您的代码可以轻松加载它的位置创建一个模块:

define(['angularAMD'], function (angularAMD) {
    var app = angular.module("app", []);
    app.controller("testCtrl", function ($scope) {
        $scope.message = "udało się!";
    });
    angularAMD.bootstrap(app);
    return app;
});

任何需要访问app您在此模块中创建的值的东西都可以只需要该app模块。

您在问题中的代码定义了一个模块,但它是异步执行的。当调用define发生时,RequireJS 已经完成加载main。就它而言,main已经完成了。那么它应该给定义的模块起什么名字呢?

于 2014-04-22T12:12:31.960 回答