Durandal路由问题

时间:2013-05-21 19:05:06

标签: router durandal

我有Durandal的小型SPA测试应用程序。 我也有非常有线的问题。 首先,我的文件夹结构是:
应用
--durandal
--viewmodels
---- user.js的
--views
---- user.html
--main.js
当结构就像这样一切都很好。但是,如果我创建像 App
--durandal
--_用户
----的ViewModels
------ user.js的
----意见
------ user.html

我收到类似localhost / App / _users / viewmodels /users.html 404 Not Found的错误。这是在require.js加载user.js之后发生的。

我的main.js看起来像

require.config({
   paths: { "text": "../durandal/amd/text" }
});

define(function (require) {
   var system = require('../durandal/system'),
      app = require('../durandal/app'),
      router = require('../durandal/plugins/router'),
      viewLocator = require('../durandal/viewLocator'),
      logger = require('../logger');

   system.debug(true);

   app.start().then(function () {
      // route will use conventions for modules
      // assuming viewmodels/views folder structure
      router.useConvention();


      // When finding a module, replace the viewmodel string 
      // with view to find it partner view.
      // [viewmodel]s/sessions --> [view]s/sessions.html
      // Otherwise you can pass paths for modules, views, partials
      // Defaults to viewmodels/views/views. 
      viewLocator.useConvention();

      app.setRoot('viewmodels/shell');

      // override bad route behavior to write to 
      // console log and show error toast
      router.handleInvalidRoute = function (route, params) {
         logger.logError('No route found', route, 'main', true);
      };
   });
});

我认为这个问题与router.useConvention();或者使用viewLocator.useConvention();但很简单,找不到任何这种行为的原因。

任何帮助,建议,想法如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:2)

这是因为view locator的行为,默认情况下会在您描述的第一个结构中查找views / viewmodels。

您可以通过提供自己的视图定位器功能,或者像useConvention()

那样调用useConvention(modulesPath, viewsPath, areasPath)来轻松更改此行为