我正在尝试让TypeScript使用默认的Aurelia骨架,它基于System.JS作为加载器.
我无法让TypeScript接受模块导入.我将其中一个骨架文件"nav-bar.js"重命名为"nav-bar.ts",看看我是否可以将该示例转换为TypeScript.代码导致编译器错误:"错误:(5,24)TS2307:找不到外部模块'aurelia-framework'."
import {bindable} from "aurelia-framework";
export class NavBar {
//noinspection ES6Validation
@bindable router = null;
}
Run Code Online (Sandbox Code Playgroud)
如何让TypeScript将aurelia-framework视为有效的导入?在项目的根目录中有一个名为config.js的文件似乎描述了"aurelia-framework"的具体位置,但TypeScript不知道如何加载它.
在此先感谢您的帮助.
我正在尝试创建一个服务器端Dart类,该类执行各种与数据相关的任务。所有这些任务都依赖于首先初始化的数据库。问题在于数据库的初始化是异步发生的(返回Future)。我首先尝试将初始化代码放入构造函数中,但是由于似乎不可行,因此放弃了这种方法。
我现在正在尝试找出如何强制进行数据库初始化,这是访问数据的任何方法调用的第一步。因此,换句话说,当在下面调用tryLogin()时,我想首先检查数据库是否已初始化,并在必要时对其进行初始化。
但是,有两个障碍。如果尚未初始化数据库,则代码很简单-初始化db,然后使用返回的future的then()方法完成其余功能。如果数据库尚未初始化,那么将then()方法附加到什么?
第二个相关问题是,当当前正在初始化数据库但此过程尚未完成时会发生什么?我如何才能收回并返回这个“进行中”的未来?
这是我要处理的代码的基本要点:
class DataManager {
bool DbIsReady = false;
bool InitializingDb = false;
Db _db;
Future InitMongoDB() {
print("Initializing MongoDB");
InitializingDb = true;
_db = new Db("mongodb://127.0.0.1/test");
return _db.open().then((_) {
DbIsReady = true;
InitializingDb = false;
});
}
Future<List> attemptLogin(String username, String password) {
Future firstStep;
if ((!DbIsReady) && (!InitializingDb) {
Future firstStep = InitMongoDB()
}
else if (InitializingDb) {
// Need to return the InitMongoDB() Future that's currently running, but how?
}
else {
// How …
Run Code Online (Sandbox Code Playgroud) 我从Aurelia开发的标准TypeScript骨架开始.
我想在"nav-bar"组件中添加一些代码,因此我决定将其从简单的HTML组件转换为常规组件.为此,我修改了app.html中的require标记:
<require from="nav-bar.html"></require>
Run Code Online (Sandbox Code Playgroud)
至
<require from="nav-bar"></require>
Run Code Online (Sandbox Code Playgroud)
接下来,我创建了一个nav-bar.ts文件,其中包含以下代码:
import {autoinject} from 'aurelia-framework';
import {customElement, bindable} from 'aurelia-framework';
// import {HttpClient} from 'aurelia-fetch-client';
@autoinject
@customElement('nav-bar')
export class NavBarClass {
public attached() {
console.log("TEST");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我完全按照原样离开了nav-bar.html.现在程序运行并且控制台包含来自实例化的NavBarClass的TEST值,但是当导航栏仅为HTML时,以前显示的菜单现在已经丢失.
如何获取菜单?我究竟做错了什么?常规组件与仅HTML组件有何不同?
谢谢你的帮助,-Greg