将 humane.js 与 aurelia 一起使用

Using humane.js with aurelia

我正在尝试使用 humane.js with aurelia,但是我 运行 遇到了问题。

看起来 humane.js 在创建 DOM 时添加了一个元素,到目前为止我发现唯一的方法就是像这样强制它....

showMessage(message) {
    this.notify = humane.create();
    this.notify.log(message);
}

但是,每次调用 showMessage() 时都会创建一个新的人道实例。这会打破队列,因为每个队列都是单独呈现的。

我试过将 create() 放入视图模型的 activate() 方法中,但这似乎也不起作用。

有什么想法吗?

以下是我如何将 humane.js 与 Aurelia 一起使用:

1) 我在应用 index.html.

中加载 CSS

2)在每个需要人性化的视图模型中,我导入人性化

从 'humane-js/humane' 导入人道;

我不会将人注入到视图模型中。

3) 我这样显示通知:

humane.log('错误:, { addnCls: 'humane-libnotify-error' });

希望对您有所帮助。

这解决了问题,我为人性化创建了一个自定义元素,然后将其包含在 app.html 中,就像加载指示器在骨架应用程序中一样。

import humane from 'humane-js';
import 'humane-js/themes/original.css!';
import {inject, noView} from 'aurelia-framework';
import { EventAggregator } from 'aurelia-event-aggregator';
import { ApiStatus } from 'resources/messages';

@noView
@inject(EventAggregator)
export class StatusIndicator {

  constructor(ea) {
    this.ea = ea;
    ea.subscribe(ApiStatus, msg => this.showMessage(msg.apistatus));
  }

  attached() {
    this.humane = humane.create();
  }

  showMessage(message) {
    this.humane.log(message);
  }
}

重要的部分是 attached() 这允许人道设置正常工作。

对于 Aurelia 来说不幸的是,Humane 将自动附加到 DOM 作为 body 的 child,然后 Aurelia 将其替换。

有一个非常非常简单的解决方法:

改变你的:

<body aurelia-app="main">

为此:

<body><div aurelia-app="main">

这样,Aurelia 不会替换 body 中的 div,您无需担心 attached() 或导入出现在代码中的位置,并且人性化完美运行。

我为此提出了一个人道的 github 问题。 https://github.com/wavded/humane-js/issues/69