1

我有一个关于需要我自己的自定义函数的问题。在我的 test.html 中,我写道:

require(["dojo/query", "new"], function(query, New) {New();});

New 是 new.js 文件,它与 dojo 文件夹位于同一位置。在 new.js 中,我写道:

define(["dojo/dom"], function(dom){return dom.byId("d1")});

在这种情况下,我可以在需要时调用我的 New 函数。

但是如果我更改 new.js 的位置,那么当我再次需要“new”时,就会出现 dojo Loader 错误。

如果我改变new.js的位置,对于test.html我应该怎么写?像:

require(["dojo/query", "../new"], function(query, New) {...});

这没有用。

有人知道,如何要求自定义的 js 文件,它与 dojo 文件夹不在同一个地方?

谢谢...

4

1 回答 1

0

我已经解决了这样的问题。

首先,我将 dojo 包含在我的<head>喜欢中:

<script type="text/javascript"
src="https://myserver.com/dojo/1.7.2/dojo/dojo.js"></script>

现在可以在 require 中找到 dojo。很明显,我的 dojo 目录列表是这样的:

https://myserver.com/dojo/1.7.2/

在此处输入图像描述

您也可以尝试使用来自 CDN 的 dojo


其次,我将所有的 javascript 放在一个文件夹中,/js. 当我require,我包括这样的文件夹名称"js/MyGrid.js"js部署到服务器上我的项目的根目录中。现在我可以require这样:

require([ "dojo", "dijit/Dialog", "dojo/parser", "dojo/_base/lang",
  "dojo/query", "dojo/dom-class", "js/MyGrid.js", "js/MyUploader.js",
  "dijit/form/TextBox", "dijit/form/Textarea", "js/MyJsonHelper.js",
  "dijit/form/SimpleTextarea", "dojox/form/BusyButton", "dojo/dom-attr",
  "dijit/form/Select", "dijit/ProgressBar", "js/MyArray.js", 
  "dojo/domReady!" ], 
  function(dojo, Dialog, parser, lang, query, domClass) {

PS:我绝不提倡将此作为最佳实践。它对我有用。我知道还有其他方法可以做到这一点,比如这样设置data-dojo-config

var dojoConfig = {
    packages: [
        { name: "my", location: "js", main: "app" }
    ]
};

http://dojotoolkit.org/documentation/tutorials/1.7/modules/

于 2013-04-12T01:12:08.650 回答