小编Gre*_*man的帖子

如何使用TypeScript加载System.js模块?

我正在尝试让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不知道如何加载它.

在此先感谢您的帮助.

javascript typescript systemjs aurelia

6
推荐指数
1
解决办法
4164
查看次数

如何在Dart中创建空白的Future +如何返回当前正在进行的Future?

我正在尝试创建一个服务器端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)

dart dart-async

4
推荐指数
2
解决办法
1472
查看次数

Aurelia中HTML组件和普通组件之间的区别?

我从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

javascript aurelia

1
推荐指数
1
解决办法
287
查看次数

标签 统计

aurelia ×2

javascript ×2

dart ×1

dart-async ×1

systemjs ×1

typescript ×1