Не удалось заставить пользовательский модуль Dojo работать с ASP.net MVC

Новичок в Dojo, и я просто пытаюсь заставить базовый модуль Hello world работать в dojo/MVC и, похоже, не могу заставить его работать. я продолжаю получать либо

отсутствие ответа/ошибки вообще или загадочные синтаксические ошибки в dojo.js e() h.injectUrl/h()

это то, что он говорит при использовании 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/>

новый модуль.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;
            }
        };
    });

person gcoleman0828    schedule 01.03.2013    source источник


Ответы (1)


Вам нужно указать путь к модулю в конфиге додзё, а не вызов 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>
person Craig Swing    schedule 01.03.2013
comment
Отличный Крейг. Теперь я попадаю в модуль, но на узле var = dom.byId(id) я получаю узел как неопределенный. В основном он не видит тег h1 с идентификатором «приветствия». Я сделал перерыв в модуле, чтобы убедиться, что это приветствия, которые передаются. В моем примере выше есть опечатка, не добавляющая «s» к приветствиям. это исправлено, и он все еще не находит его. Спасибо еще раз - person gcoleman0828; 01.03.2013
comment
Попробуйте потребовать dojo/domReady!. См. dojotoolkit.org/reference-guide/1.8/dojo/domReady.html - person Craig Swing; 02.03.2013