如何使用requirejs在Angular 应用程序中请求dojox?

szqfcxe2  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(167)

我不得不面对一个巨大的angularjs应用程序,其中UI部分将由dojo实现。
我的项目是一个angularjs应用程序,它的结构是这样的:

  • 公众
  • 脚本
  • 角的
  • dojo
  • dojo
  • 迪Git
  • 多约克斯
  • require.js
  • 模组
  • sub-directive1.js
  • sub-directive2.js
  • sub-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-directive 1创建一个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在sub-directive 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文件而不是一个目录。这就是我困惑的地方!

70gysomp

70gysomp1#

好吧,没人回应,我自己克服了,当我们想用requirejs来请求dojo/dijit/dojox的时候,我们应该做两个步骤
1.不使用realease代码而不是开发源代码
1.使用包配置dojo不使用路径
软件包:[ {名称:“dojo”,位置:“库/dojo/dojo”},{名称:'dijit',地点:“库/dojo/dijit”},{名称:“dojox”,位置:'库/dojo/dojox' } ],

相关问题