问题:
我的申请没有开始;它只是进入一个无限循环。
代码:
我的app.start:
app.start().then(function() {
//Replace 'viewmodels' in the moduleId with 'views' to locate the view.
//Look for partial views in a 'views' folder in the root.
viewLocator.useConvention();
//configure routing
router.useConvention();
router.mapNav('home');
router.mapNav('intro');
router.mapNav('error');
router.mapRoute('set/:id', 'viewmodels/set', 'Set');
router.mapRoute('folder/:id', 'viewmodels/folder', 'Folder');
router.mapRoute('api', 'viewmodels/api', 'API Reference');
app.adaptToDevice();
app.setRoot('viewmodels/intro');
//logger.logError('No route found', route, 'main', true);
/*
router.handleInvalidRoute = function (route, params) {
//debugger;
//router.navigateTo('#/error');
};
*/
});
我将root设置为intro,其中包含一个具有登录功能的简单viewmodel:
define(['durandal/app', 'durandal/plugins/router', 'services/dataservice'], function (app, router, dataservice) {
var introViewModel = function () {
var self = this;
self.router = router;
self.logIn = function () {
app.setRoot('viewmodels/shell');
};
self.activate = function () {
return router.activate('intro');
};
这里的目标是在用户登录时重新设置应用程序的根目录。任何想法我做错了什么?
答案 0 :(得分:1)
根据Rob在Google网上论坛页面上的回答,这里有一些对我有用的细节可能有助于其他人:
在main.js app.start()。then():将root设置为您的登录页面。
登录后,配置路由器并添加路由。 (添加 在路由器激活之前,路由必须。)这是一个机会 仅检索用户有权访问的路由 登录过程。
最后,将app root设置为shell,然后激活 路由器使用您指定的默认路由。目前,我修改了 激活路由器中的功能以获取a的附加参数 启动网址 - 这样,如果需要,我可以绕过默认页面。
答案 1 :(得分:0)
Per Rob over the Google Groups,我刚从我的介绍页面中取出路由器并在我的shell.js中运行它,只激活路由器一次。这似乎收紧了一点,应用程序现在正在运行:
https://groups.google.com/forum/#!topic/durandaljs/RdGpwIm1oOU
答案 2 :(得分:0)
根据你的回答,第一部分(setroot to login),我做了这个,但登录页面没有加载,也没有显示错误。
主要我简单地把app.setRoot('viewmodels / login','entrance');
登录时我只有一个激活功能:
function activate() {
return true;
}
这是对的吗?