如何使用requirejs在角度应用程序中要求dojox?

我必须面对一个巨大的angularjs应用程序,UI部分将由dojo实现。

我的项目是一个angularjs应用程序,其结构如下所示:

  • 上市
  • 脚本
  • 道场
  • 道场
  • 的dijit
  • DojoX中
  • require.js
  • 模块
  • 子directive1.js
  • 子directive2.js
  • 子app.js
  • main.js
  • 的index.html
  • 在文件index.html中

    <script data-main="scripts/main" src="scripts/libs/require.js"></script>
    

    在文件main.js中

    require.config({
        baseUrl: "scripts",
        paths: {
            ......
            , dojo: "libs/dojo/dojo"
            , dijit: "libs/dojo/dijit"
            , dojox: "libs/dojo/dojox"
        }
    });
    

    在文件sub-app.js中

    define([...], function (...) {
    
        var app = angular.module("subApp",["ngRoute"]);
    
        app.config([
            //config something
    
        ]);
        app.run([
            // do something in runing phase
        ]);
    
        return app;
    });
    

    在文件sub-directive1.js中,我需要dijit / Calendar为sub-directive1创建一个Calendar小部件。 它运行良好,requirejs可以轻松找到“dijit / Calendar”。

    define([
        "./sub-app"
    ], function(app) {
    
        app.directive("subDirective1",
            function() {
                return {
                    restrict: "E",
                    replace: true,
                    link: function (scope, iElement, iAttrs){
                        ......
                        require([
                            "dijit/Calendar",
                            "dojo/date",
                            "dojo/domReady!"
                        ], function(Calendar, date){
                            new Calendar({
                                value: new Date(),
                                isDisabledDate: function(d){
                                    var d = new Date(d); d.setHours(0, 0, 0, 0);
                                    var today = new Date(); today.setHours(0, 0, 0, 0);
                                    return Math.abs(date.difference(d, today, "week")) > 0;
                                }
                            }, iElement);
                        });
                    }
                }
            }
        );
    });
    

    在文件sub-directive2.js中,我需要dojox / charting / Chart来在子指令2中创建一个列图。 但它无法工作,我的浏览器输出: 无法加载资源:服务器响应状态为404(未找到)http:// localhost:63342 / public / scripts / libs / dojo / dojox.js

    define([
            "./sub-app"
        ], function(app) {
    
            app.directive("subDirective2",
                function() {
                    return {
                        restrict: "E",
                        replace: true,
                        link: function (scope, iElement, iAttrs){
                            ......
                        require(["dojox/charting/Chart",
                            ......
                            "dojo/ready"],
                            function(Chart, Default, Lines, Wetland, ready){
                                ready(function(){
                                    var c = new Chart("chart3");
                                    .....
    
                                    iElement.append(chart1);
    
                                });
                            });
                        }
                    }
                }
            );
        });
    

    我想知道为什么requirejs可以正确地找到diji路径,但没有正确地找到dojox路径? 它认为dojox是一个JavaScript文件而不是目录。 这让我感到困惑!


    好。 没有人回应。 我自己克服了它。 当我们想要使用requirejs来要求dojo / dijit / dojox时,我们应该执行2个步骤

  • 不使用释放代码而不是开发源代码
  • 使用软件包配置dojo不使用路径

    软件包:[{name:'dojo',位置:'libs / dojo / dojo'},{name:'dijit',位置:'libs / dojo / dijit'},{name:'dojox',位置:'libs / dojo / dojox'}],

  • 链接地址: http://www.djcxy.com/p/92521.html

    上一篇: How to use requirejs to require dojox in angular application?

    下一篇: Requirejs why and when to use shim config