Dojo小部件:如何设置小部件内的文件的URL?

时间:2012-06-16 14:30:19

标签: javascript module dojo requirejs

我想在我的小部件中显示默认图像。指向位于窗口小部件文件夹结构内的图像的最佳解决方案是什么?

require.toUrl(“widgets.notes”,“images / defaultAvatar.png”),

输出结果为:

htpp://www.example.com/widgets/main.notes 404(未找到)

2 个答案:

答案 0 :(得分:0)

您对require.toUrl的来电是假的,没有第二个参数。

假设您设置了“小部件”的模块路径,请执行以下操作:

    require.toUrl("widgets/notes/images/defaultAvatar.png")

如果您只发送包名称空间(例如“小部件”),它将尝试使用CommonJS Package spec。您将在其中一个信息中注意到标准最低要求是:

  • main - 调用require(name)时必须加载的模块。定义必须与包描述文件相关。

require.toUrl("widgets")解释的是什么。

然而,可以选择应该寻找包“root”的位置。所以,如果你有:

/
  dojo/
  dijit/
  dojox/
  widgets/

然后你从没有交互的开始设置,'widgets'是一个全局命名空间pr定义。如果它不是“就地”,那么dojo.registerModulePath(已弃用为pr 1.7)会派上用场,请参阅reference guide

如果你将它设置为另一条路径(xdomain变得非常复杂,但是接受了绝对路径),那么你可以在这里做两个选项之一:

首先是包的示例布局:

/ (webroot)
/dojo/
   dojo-release-x.y/
     dojo/
     dijit/
     dojox/
/widgets/

选项一是dojoConfig,在加载dojo.js脚本标记之前设置为window.dojoConfig

var dojoConfig = {
  packages: [
    {
      name: "widgets",
      location: "/widgets"  // note, 'http://mydomain.tld/widget' would work
    }
  ]
};

选项二作为require的附加第一个参数,如下所示:

require({
  packages: [
    {
      name: "widgets",
      location: "/widgets"
    }
  ]
}, ["widgets/notes"], function(Notes) {
 ...
});

答案 1 :(得分:0)

检查一下它对我有用

avatar:require.toUrl(“widgets / MyFirstWidget / widget / images / edwin.jpg”)

在括号中以单词小部件开头,然后转发斜杠,后跟资源的完整URL。以上面的例子为例,MyFirstWidget是小部件的名称,images是我在widget中创建的用于存储图像文件的文件夹