1

尝试激活我的 shell 时出现 404 错误。它似乎找到了 shell.js 但随后表明它找不到 shell.html 因为它在错误的地方寻找!

我试图强制公约明确告诉它在哪里看,但它仍然不起作用。像这样:viewLocator.useConvention('viewmodels', 'views', '');

但我仍然得到:

App/viewmodels/shell.html 404 (Not Found)

显然它不应该往里看app/viewmodels/,它应该往里看app/views/

我项目的不同之处在于我没有将“/scripts/”文件夹用于第 3 方的东西,而是使用我自己的名为“/content/”的文件夹。我还将与 durandal 相关的几乎所有内容都放在“/app/”文件夹中。

这是我项目中一些关键文件的结构:

+app (folder)
  main.js
  > durandal (folder)
     app.js
     r.js
     require.js
     text.js
     viewEngine.js
     viewLocator.js
 > plugins (folder)
     router.js
 > viewmodels (folder)
     shell.js
 > views (folder)
     shell.html

在 main.js > 这里是我设置要调用的 shell 的地方: app.setRoot('viewmodels/shell');

这是 main.js 中的路径:

paths: {
        'text': 'durandal/text',
        'durandal': 'durandal',
        'plugins': 'durandal/plugins',
        'transitions': 'durandal/transitions'
}

在 shell.js > 中,这并不重要,因为此时它已经抛出了 404。

有任何想法吗?

4

1 回答 1

1

我现在明白了。我在 main.js 中定义的模块的路径错误。不知道为什么他们没有抛出错误,但无论如何,这就是我改变的:

从: define(['../app/durandal/system', '../app/durandal/app', '../app/durandal/viewLocator'], function (system, app, viewLocator) {

至: define(['durandal/system', 'durandal/app', 'durandal/viewLocator'], function (system, app, viewLocator) {

似乎现在可以工作了。

于 2013-10-31T20:35:40.480 回答