【问题标题】:How can I write to a global variable in Aurelia?如何在 Aurelia 中写入全局变量?
【发布时间】:2016-10-06 15:20:09
【问题描述】:

我正在编写一个 Aurelia 应用程序,并且我已经在 aurelia 容器中注册了一个类的实例。现在,当我对用户进行身份验证时,必须修改该实例。如何从代码中的任何位置修改原始实例?

【问题讨论】:

  • 我知道您只是想查看下面的答案。其中之一是真的好。

标签: dependency-injection typescript aurelia


【解决方案1】:

如果你想遵循依赖注入模式,你需要将该实例注入到任何想要修改实例的类中。

import { inject } from 'aurelia-framework'
import { MyClass } from './my-class';

@inject(MyClass)
export class MyViewModel {
    constructor(MyClass) {
        this.myClass = MyClass;
    }
    somethingSpecial() {
        this.myClass.foo = 'bar';
    }
}

【讨论】:

  • 如果回答有帮助,请点赞并采纳!
  • 这是正确答案。默认情况下,Aurelia 的依赖注入将所有导入(自定义元素和属性除外)视为单例。您甚至可以更进一步并导入 Container 本身并使用它从函数中获取类等。
  • 这很有帮助,但是如何处理 MyClass 中异步设置的属性?
【解决方案2】:

如何从代码中的任何位置修改原始实例

最好将实例放在模块中。然后还公开修改实例的函数。例如

let foo = {}

export function getFoo(){return foo}
export function setFoo(bar){ /* do something */}

【讨论】:

    猜你喜欢
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2016-04-24
    相关资源
    最近更新 更多