从1.2升级到Durandal 2.0 - 找不到shell.html

时间:2013-10-31 19:32:50

标签: asp.net-mvc-4 durandal

我在尝试激活shell时遇到404错误。它似乎找到了shell.js,但后来表明它找不到shell.html因为它看错了地方!

我试图迫使会议明确告诉它在哪里看,但它仍然无法正常工作。像这样:viewLocator.useConvention('viewmodels', 'views', '');

但我仍然得到:

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

显然它不应该在app/viewmodels/中查看,它应该在app/views/中查看

我的项目的不同之处在于我没有使用'/ scripts /'文件夹作为第三方的东西,我正在使用我自己的名为'/ 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了。

任何想法?

1 个答案:

答案 0 :(得分: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) {

现在似乎有用了。