user721588
user721588

Reputation:

dojo 1.7.2+ require custom module

I have written a custom modyle, for example it is printing "Hello World" to the console.

require([
    "dojo/_base/declare"
    ],
    function(declare) {

        return [
            declare("Hello", null, {

                printHello : function() {
                    console.log("Hello, World!");
                }
            })
        ];
    }
);

And the name of the .js file is "Hello.js". In my html page I need this module, but I have a problem with loading it. My code:

<script type="text/javascript">
    var dojoConfig = {
            async : true,
            parseOnLoad : false,
            isDebug : true,
        packages: [
                   { name: "gui", location: "/scripts/gui" }
         ]
    };
    require([ 
              "gui/common/Hello"
            ],

    function(HelloFunciton) {
        var hello = new Hello();
        hello.printHello();

    });
</script>

But I have a error in console:

"NetworkError: 404 Not Found - http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/scripts/gui/common/Hello.js"

It should the javascript file from the localhost... What might be the problem?

Upvotes: 0

Views: 384

Answers (1)

phusick
phusick

Reputation: 7352

Add baseUrl: "./" to your dojoConfig.

Also make the path to your package relative via ./scripts/gui.

Complete HTML file:

<html>
    <head>
        <script>
            var dojoConfig = {
                async: true,
                baseUrl: "./",
                parseOnLoad: false,
                isDebug: true,
                packages: [
                    { name: "gui", location: "./scripts/gui" }
                ]
            }
        </script>
        <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.js"></script>
        <script>
            require(["gui/common/Hello"], function(Hello) {
                var hello = new Hello();
                hello.printHello();
            });
        </script>
    </head>
    <body>
    </body>
</html>

The module file ./scripts/gui/common/Hello.js:

define([
    "dojo/_base/declare"
], function(
    declare
) {

    return declare([], {
        printHello: function() {
            console.log("Hello world!");
        }
    });

});

Upvotes: 1

Related Questions