0

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

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

输出是:

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

4

2 回答 2

0

您的调用require.toUrl是虚假的,没有采用第二个参数。

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

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

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

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

这就是require.toUrl("widgets")解释。

然而,人们可以选择应该在哪里寻找包“根”。所以,如果你有:

/
  dojo/
  dijit/
  dojox/
  widgets/

然后你从一开始就没有交互,'widgets' 是一个全局命名空间 pr 定义。如果它不是“就地”,这就是dojo.registerModulePath(作为 pr 1.7 已弃用)派上用场的地方,请参阅参考指南

如果您将其设置为另一个路径(xdomain 变得非常复杂,但是接受绝对路径),那么您将在此处执行以下两个选项之一:

首先是包的示例布局:

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

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

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) {
 ...
});
于 2012-06-16T14:59:30.787 回答
0

看看这个对我有用

头像:require.toUrl("widgets/MyFirstWidget/widget/images/edwin.jpg")

在括号中以单词 widgets 开头,然后是正斜杠,然后是资源的完整 url。以上面的示例为例,MyFirstWidget 是小部件的名称,而 images 是我在小部件中创建的用于存储图像文件的文件夹

于 2015-09-07T11:37:32.303 回答