- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用两个“外壳”设置一个应用程序,一个用于登录,一个用于身份验证后的应用程序。我正在按照 Mathew James Davis https://foursails.github.io/sentry 友情提供的此处概述的示例进行操作,也显示在这个问题中 How to switch between login page and app with Aurelia .
我的代码如下。我收到如下所示的错误。我想我没有使用来自“aurelia-framework”的 {Aurelia} 的导入和注入(inject),但我无法找出错误。
感谢任何帮助。谢谢。
在 main.js 中
import {AuthService} from './auth-service';
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.feature('resources');
aurelia.use.developmentLogging(environment.debug ? 'debug' : 'warn');
if (environment.testing) {
aurelia.use.plugin('aurelia-testing');
}
aurelia.start().then(() => {
var auth = aurelia.container.get(AuthService);
let root = auth.isLoggedIn() ? 'app' : 'login';
aurelia.setRoot(root);
});
}
在 login.js 中
import { inject, Aurelia } from 'aurelia-framework';
import {AuthService} from './auth-service';
@inject(AuthService, Aurelia)
export class login {
constructor(authService, aurelia) {
this.auth = authService;
this.app = aurelia;
}
login(){
this.auth.login();
this.app.setRoot('app');
}
}
在 app.js 中
import { inject, Aurelia } from 'aurelia-framework';
import AuthService from 'auth-service';
@inject(AuthService, Aurelia)
export class App {
constructor(authService, aurelia){
this.auth = authService;
this.app= aurelia;
}
logout(){
this.auth.logout();
this.app.setRoot('login');
}
}
在 auth-service.js 中(现在只是模拟)
export class AuthService {
constructor(){
this.userLoggedIn = false;
}
login() {
this.userLoggedIn = true;
}
logout(){
this.userLoggedIn = false;
}
isLoggedIn(){
return this.userLoggedIn;
}
}
当我启动应用程序时,它会按预期显示“登录” View 。它有一个调用 login() 的按钮。我希望此函数随后运行 this.app.setRoot('app')。但是我收到以下错误:
aurelia-pal.js:37 Uncaught (in promise) Error: Error invoking App. Check the inner error for details.
------------------------------------------------
Inner Error:
Message: key/value cannot be null or undefined. Are you trying to inject/register something that doesn't exist with DI?
Inner Error Stack:
Error: key/value cannot be null or undefined. Are you trying to inject/register something that doesn't exist with DI?
at validateKey (http://localhost:9000/scripts/vendor-bundle.js:54152:11)
at Container.get (http://localhost:9000/scripts/vendor-bundle.js:54356:5)
at Object.invoke (http://localhost:9000/scripts/vendor-bundle.js:54214:31)
at InvocationHandler.invoke (http://localhost:9000/scripts/vendor-bundle.js:54172:166)
at Container.invoke (http://localhost:9000/scripts/vendor-bundle.js:54443:23)
at StrategyResolver.get (http://localhost:9000/scripts/vendor-bundle.js:53805:36)
at Container.get (http://localhost:9000/scripts/vendor-bundle.js:54382:21)
at http://localhost:9000/scripts/vendor-bundle.js:70122:71
End Inner Error Stack
------------------------------------------------
at new AggregateError (http://localhost:9000/scripts/vendor-bundle.js:57264:11)
at Container.invoke (http://localhost:9000/scripts/vendor-bundle.js:54445:13)
at StrategyResolver.get (http://localhost:9000/scripts/vendor-bundle.js:53805:36)
at Container.get (http://localhost:9000/scripts/vendor-bundle.js:54382:21)
at http://localhost:9000/scripts/vendor-bundle.js:70122:71
AggregateError @ aurelia-pal.js:37
invoke @ aurelia-dependency-injection.js:692
get @ aurelia-dependency-injection.js:52
get @ aurelia-dependency-injection.js:629
(anonymous) @ aurelia-templating.js:4902
Promise.then (async)
setRoot @ aurelia-framework.js:215
login @ login.js:23
evaluate @ aurelia-binding.js:1555
callSource @ aurelia-binding.js:5275
handleEvent @ aurelia-binding.js:5284
最佳答案
谢谢@bigopon,您的提示导致了解决方案。将 AuthService 的导入编写为:
import {AuthService} from './auth-service';
成功了。我查看了从 MDN 导入的相关文档 link .如果在 'auth-service.js' 中我使用过
export default AuthService {...
然后
import AuthService from './auth-service;
会起作用。但是,我不明白为什么 login.js 中的行会出错
this.app.setRoot('app');
导致错误而不是上一行。感谢您的帮助!
关于javascript - 如何正确导入/注入(inject) aurelia 以使用 'setRoot' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55876653/
我想在 aurelia 中触发两种不同的方法,实现这一目标的最佳方法是什么? 最佳答案 我可能会做的是以下 HTML Javascript yourFunction(event, parts) {
我正在学习 Aurelia 的工作原理,并且我正在尝试让一个简单的自定义属性工作。它所做的就是根据某些值的变化来改变 div 文本的颜色。 我有一个 div,它有: high.bind="ch
我想在小型移动 Cordova 应用程序中使用 aurelia。是否可以省略任何模块加载器,如 requirejs 并直接在脚本标签中使用 aurelia 包,如 ? 谢谢, 乔治 最佳答案 您
我正在构建一个 aurelia 自定义元素库,供多个不同的 aurelia 应用程序使用,但在使用 CLI 进程将自定义元素 html 正确 Hook 到应用程序包时遇到了麻烦。 我目前认为该库将成为
我刚刚尝试了 aurelia 的入门应用程序,并注意到当在两个浏览器(chrome 和 ff)中打开时,它会保持导航同步。看起来路由器实例驻留在应用程序范围内。我在文档中没有找到任何有关范围的信息,所
Knockout JS 有虚拟元素的概念。这些是“ headless ”元素,您可以将其绑定(bind)到没有 HTML 元素作为容器的元素。这允许您在不发出外部 HTML 的容器中绑定(bind)数
最近我一直在玩不同的框架和库,寻找真正适合我需求的东西。 你看,我的工作主要涉及创建 asp.net mvc 应用程序,对于大多数使用 Razor 和一点点 jQuery 就足够了。但在某些情况下,仅
最后,我开始与 Aurelia 合作。有一个入门套件可用 Here这有助于初始化 Aurelia。但它是一个模板,应该在网站模板中使用。 我有一个预配置 WebApi项目,我想在其中使用 Aureli
在 Aurelia 从这里发布之前,我使用了启动工具包来构建我的应用程序: https://github.com/aurelia/skeleton-navigation 但是当 Aurelia 发布时
我已经使用 typescript 安装了一个全新的骨架导航,并尝试按照此处的说明进行操作: http://aurelia-ui-toolkits.github.io/demo-materialize/
我有以下按钮,我只想在满足给定条件时激活(点击启用),尽管视觉上禁用了按钮 click 事件在用户点击时仍会触发。 [更新]将 false 更改为 true 我在清理示例以在此处发布时错误地插入了错
在 aurelia 中,当在自定义元素中使用插槽时,是否可以以某种方式在插槽上使用 ref 元素(也许是 Aurelia 团队的新功能?github 问题据说是在 SO 而不是在 github 上发布
我正在为我的项目使用 Aurelia,现在我在导航到上一页时遇到问题。我想知道有什么方法可以从 Aurelia 路由器对象获取以前的路由器信息。 this.router.navigateToRoute
我正在寻找一种将类动态添加到 aurelia 模板的方法。如果特定的 li 可见,我必须添加一个事件类。 例子 {{title}}
我已经向我的路由器添加了授权管道步骤。一切正常,但是当我使用 Redirect 时类来将用户指向登录页面,它接受一个 URL 作为它的参数。如果我使用 Router.navigateToRoute()
我在将属性传递到自定义组件时遇到了一些问题。我尝试通过以下方式声明我的组件: import {customElement, bindable} from "aurelia-framework";
{ route: 'content/:id', name: 'Details', title: 'Details', viewPorts
我正在处理 Aurelia Sample app并希望将构建输出(vendor-bundle.js 和 app-bundle.js)部署到 www-root\scripts而不是默认 scripts目
我正在尝试创建一个简单的 Aurelia 可重用小部件,它封装了一个标签和一个文本输入字段。我们的想法是创建一个包含这些可重用 UI 小部件的库,以便更轻松地组合屏幕和表单——或许可以从“Angula
我正在尝试在复选框列表上使用去抖动绑定(bind)行为,但它似乎没有按我预期的方式工作(我不确定你是否可以去抖动复选框): Checkbox value "${v}" 单击任何复选框会导致
我是一名优秀的程序员,十分优秀!