【问题标题】:Including dojo/dom library to Spring Roo将 dojo/dom 库包含到 Spring Roo
【发布时间】:2012-07-27 13:54:24
【问题描述】:

如何在 Spring roo 中包含和使用 dojo/dom 库。

这个:

 <script type="text/javascript">
                      dojo.require('dojo/dom');
                      dojo.ready(function remAttr(){
                          dojo.removeAttr('theId', 'value');
                        }
                     );
</script>

结果:

"NetworkError: 404 Introuvable - http://localhost:8131/suivitrc/resources/dojo/dom.js"
dom.js
Could not load 'dojo/dom'; last tried '../dojo/dom.js'

有人可以帮忙吗?

【问题讨论】:

  • 你用的是什么版本的spring roo?

标签: dojo javascript spring-roo


【解决方案1】:

我认为roo中dojo的版本目前低于1.7。这意味着您可以从代码中删除以下行,因为 remoteAttr 函数是 dojo.js 的一部分:

dojo.require('dojo/dom');

请看这里:http://dojotoolkit.org/reference-guide/1.7/dojo/removeAttr.html

【讨论】:

    【解决方案2】:

    命名空间 => 到模块路径是通过替换句点 (.) 来检索的,简而言之 - 您需要将斜杠替换为点。你的要求应该是

      dojo.require('dojo.dom'); // blocking call? djConfig.async must be false
    

    由于错误与 dojo.require 指定的路径有关,这意味着您的 dojo.js 已找到并已加载(dojo.require 未定义)- baseUrl 与 dojo 模块无关。

    问题是,您正在使用旧版加载程序来拉入 AMD 模块,在 1.7+ 中,require 语句的外观与它不同。

      // AMD loader form is
      function callbackFunctionOnComplete(dojoDom) { }
      require([ "dojo/dom" ], callbackFunctionOnComplete); // non-blocking
    

    那么,dojo.require 的工作原理如下,假设我们作为字符串传递的参数称为 'module;

    dojo.require = function(module) {
       var parts = module.split('.');
    

    1 - 获取顶级命名空间(全局)

       var packageName = parts.shift(); // first part is the package name
    

    2 - 获取文件名(减去 .js)

       var id = parts.pop(); // the last bit
    

    3 - 将中间的所有内容转换为路径(相对于包位置)

       var mid = parts.join("/");
    

    4 - 查找包(从顶层)位置

       var fullpath = // in pseudo
           foreach dojoconfig.packages 
             iff obj.name == packageName 
                set to obj.location
    

    5 附加其余部分并开始下载模块

       fullpath += mid + id + '.js'
       transport.get(..... fullpath .....)
    

    【讨论】:

      【解决方案3】:

      您需要使用 dojo config 来配置 dojo。我更喜欢这里解释的表格:

      http://dojotoolkit.org/reference-guide/1.7/dojo/_base/config.html#explicitly-creating-a-dojoconfig-object-before-including-the-dojo-core.

      而且你需要告诉道场在哪里可以找到它的东西。一个例子:

       var dojoConfig =
        {
           baseUrl : "/yourApp/js",  // defines the js folder in your webapp
           tlmSiblingOfDojo: false,
           async: true,
           parseOnLoad:true,
           packages: [
              { name: "app", location: "app"}, // where it is in the js folder
      
              { name: "dojo", location: "lib/dojo" }, // where it is in the js folder
              { name: "dijit", location: "lib/dijit" },
              { name: "dojox", location: "lib/dojox" }
           ]
        };
      

      您使用的要求表单也已弃用。见http://livedocs.dojotoolkit.org/dojo/require

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多