将r.js与Angular和Require一起使用

时间:2013-10-07 16:50:59

标签: javascript angularjs requirejs r.js

在我的角度应用程序中使用require时,我遇到了设置r.js的问题。我是使用AMD的新手,所以它可能很容易解决。不幸的是,目录结构必须保持原样,因为需要能够使用相同的默认组件添加更多客户端。

我得到的错误是它无法找到控制器依赖项。从Client#1 / Directory_For_Prod_Packs / Angular / Default / _Controllers / .js引用它们是三分法。所以基本上它是在构建文件所在的位置末尾添加整个绝对路径,或者至少在我看来是这样。任何帮助都会很棒。基本上我只想拥有一包所有指令,服务,控制器等。或者包controller.js然后是directives.js等等。

这是我的目录结构。

      • angular.js
    • 默认
      • 控制器
        • _Controllers.js //包控制器
        • .js //所有单独的控制器
      • 指令
        • _Directives.js
        • 的.js
    • 客户端#1
      • main.js // require config
      • app.js
      • build.js // r.js build config

这是我对r.js的build.js

({
baseUrl: '../../lib/Angular',
dir: "../../Client#1/ProductionBuild",
paths: {
    "controllers": '../../Default/_Controllers/_Controllers',     
}, 
modules: [
    {
    name: "controllers"
    }
] 
})

最后这是我的_Controller.js

define(['angular',
    '../../Default/_Controllers/controller1.js',
    '../../Default/_Controllers/controller2.js'],
    function(angular) {
        'use strict';

        var dependencies = ['controller1',
                            'controller2',];

        angular.module('app.controllers', dependencies);
    }
);

1 个答案:

答案 0 :(得分:0)

我不确定究竟是什么问题(目录结构和../..似乎不匹配,但我可能会弄错),但尝试将build.js属性设置为:

  • baseUrl:包含脚本的文件夹相对于加载它们的HTML页面,相对于build.js
  • dir:构建输出文件夹相对于build.js
  • appDir:应用程序文件夹。它可能包含一个index.html,用于引导应用程序的脚本。 baseUrl配置属性指向的文件夹必须在此下面!这是相对于build.js

要特别注意baseUrl,那些../..看起来很可疑。它与index.html相关,而不是build.js