Aurelia - 尝试切换root,但找不到位置

时间:2017-11-09 11:32:58

标签: aurelia

我一直在关注各种来源,尤其是Mathew James Davis和THIS博客条目以及其他人。

我有我的boot.ts(主要在其他例子中等):

    aurelia
        .start()
        .then(function () { return aurelia.setRoot(PLATFORM.moduleName("public/public/public")); });

    });

有效。

我现在正在运行两个根并检查localstorage中是否存在JWT。它得到了jwt并存储它没关系,我甚至正确地获得它但它现在无法识别根,我认为我有某种语法错误..

这就是我现在所拥有的:

aurelia.start().then(() => {
    var auth = aurelia.container.get(AuthService);
    let root = auth.isAuthenticated() ? 'app/app/app' : 'public/public/public';
    return aurelia.setRoot(PLATFORM.moduleName(root));
});

我收到以下错误:

Uncaught (in promise) Error: Unable to find module with ID: public/public/public

我不知道为什么当直接输入完全相同的路径时它现在不起作用..

更新

好的,所以我想我会重构这个并利用有效的代码部分:

这就是我改为:

var auth = aurelia.container.get(AuthService);
let authenticated = auth.isAuthenticated();
console.log("authenticated: ", authenticated);


if (authenticated) {
    aurelia
        .start()
        .then(function () { return aurelia.setRoot(PLATFORM.moduleName("app/app/app")); });
} else {
    aurelia
        .start()
        .then(function () { return aurelia.setRoot(PLATFORM.moduleName("public/public/public")); });
}

现在它显示一个空白的加载页面,其中包含" loading"并在控制台中显示:

authenticated:  false
aurelia-logging-console.js:27 INFO [aurelia] Aurelia Started

client.js:82 [HMR] connected

注意 - 如果只有原始代码包含app / app / app且authentication = true,那么它也会正确显示。

因此两个根都有效,但没有检查..

1 个答案:

答案 0 :(得分:0)

最后解决了这个问题。我最终改变了原来的代码:

aurelia.start().then(function () {
var auth = aurelia.container.get(AuthService);
var root = auth.isAuthenticated() ? "app/app/app" : "public/public/public";
aurelia.setRoot(root);

为:

  aurelia.start().then(() => {
    var auth = aurelia.container.get(AuthService);
    let root: string = auth.isAuthenticated() ? PLATFORM.moduleName('app/app/app') : PLATFORM.moduleName('public/public/public');

    aurelia.setRoot(root, document.body)
});

它现在有效。最后,我缺乏编程技巧,但是如果有其他人有问题,他们可能会尝试这样做来切换路线。