2013-05-21 83 views
0

我有Durandal的小型SPA測試應用。 另外我有非常有線的問題。 首先,我的文件夾結構是:
應用
--durandal
--viewmodels
---- user.js的
--views
---- user.html
- 主。 js
而當結構就像所有的工作都很好。但是,如果我創建結構類似
應用
--durandal
--_用戶
----的ViewModels
------ user.js的
----意見
---- --user.html
Durandal路由問題

我得到像localhost/App/_users/viewmodels /users.html 404 Not Found錯誤。在user.js被require.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();但簡單的找不到任何這種行爲的原因。

任何幫助,建議,想法如何解決這個問題?

感謝

回答

2

這是因爲view locator的行爲,通過默認會在你所描述的第一結構的意見/的ViewModels的。

您可以輕鬆地通過提供自己的看法定位器功能改變這種行爲,或致電useConvention()這樣useConvention(modulesPath, viewsPath, areasPath)

+0

謝謝,但useConvention()或不工作或我只是不知道究竟要放在那裏。如果我把useConvention('_ users/viewmodels','_users/views')放在那裏,那麼app.setRoot('viewmodels/shell');如果我把.useConvention('viewmodels','views');,然後再次獲取本地主機/應用程序,然後我得到錯誤404找不到 - 本地主機/應用程序/ _users/viewmodels/shell.html「 /_users/viewmodels/users.html 404 Not Found。因此,這是非常令人困惑的,如果我將user.html從視圖文件夾移動到查看文件夾,然後是所有分支,但會得到稍微不同的調試消息 – dewebeloper

+1

使用'useConvention('_ users /這個應該可以工作,記住,任何時候當你引用一個視圖模型時,你仍然必須使用*視圖模型,而不是視圖模型的視圖模型,完整的* moduleid路徑,這是從App文件夾的路徑。 – Tyrsius

+0

謝謝,但仍然不起作用。當我應用您的建議,然後我得到「NetworkError:404未找到 - 本地主機/應用程序/ _users/_users/viewmodels /外殼.js「 – dewebeloper