无法让Dojo自定义模块与ASP.net MVC一起使用

时间:2013-03-01 18:13:20

标签: javascript html asp.net-mvc dojo

Dojo的新手,我只是想在dojo / MVC中运行一个基本的Hello world模块,但似乎无法让它工作。我一直得到

  

dojo.js中没有任何响应/错误或含糊不清的语法错误e()   h.injectUrl /小时()

是使用FireFox / Firebug时的说法。 我使用1.8并尝试过CDN和本地副本。

以下是代码。

Index.cshtml

    <script src="~/Scripts/dojo/dojo.js" data-dojo-config="async: true, isDebug: true, parseOnLoad: true"></script><script>
    // Require default stuff and new module
    require([
                "~/Scripts/dojoDemo/newModule"
    ],
    function (newModule) {
        newModule.setText("greetings", "Hello peoples");
        settimeout(function () {
            newModule.restoreText("greeting");
        }, 3000);
    });</script><h1 id="greetings">What up</h1>

<br/>
<br/>

newModule.js

define([
    // Define the dependencies
    "dojo/dom"], 
    // Create this function to call new module
    function (dom) {
        var oldText = {};
        return {
            setText: function (id, text) {
                var node = dom.byId(id);
                oldText[id] = node.innerHTML;
                node.innerHTML = text;
            },
            restoreText: function (id) {
                var node = dom.byId(id);
                node.innerHTML = oldText[id];
                delete oldText;
            }
        };
    });

1 个答案:

答案 0 :(得分:1)

您需要在dojo配置中指定模块的路径,而不是require调用。 paths将顶级模块名称映射到文件到服务器的位置。默认情况下,文件路径相对于dojo.js

<script src="~/Scripts/dojo/dojo.js" 
  data-dojo-config="async: true, isDebug: true, parseOnLoad: true, 
     paths: { dojoDemo: '../dojoDemo' }">
</script>
<script>
  require(["dojoDemo/newModule", "dojo/domReady!"], function (newModule) {
      newModule.setText("greeting", "Hello peoples");
      setTimeout(function () {
          newModule.restoreText("greeting");
      }, 3000);
  });
</script>