Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dependency injection 如何在Aurelia中写入全局变量?_Dependency Injection_Typescript_Aurelia - Fatal编程技术网

Dependency injection 如何在Aurelia中写入全局变量?

Dependency injection 如何在Aurelia中写入全局变量?,dependency-injection,typescript,aurelia,Dependency Injection,Typescript,Aurelia,我正在编写一个Aurelia应用程序,并在Aurelia容器中注册了一个类的实例。现在,当我对用户进行身份验证时,必须修改该实例。如何从代码中的任何位置修改原始实例 如何从代码中的任何位置修改原始实例 最好将实例放在一个模块中。然后还公开修改实例的函数。e、 g let foo = {} export function getFoo(){return foo} export function setFoo(bar){ /* do something */} 如果希望遵循依赖项注入模式,则需要

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

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

最好将实例放在一个模块中。然后还公开修改实例的函数。e、 g

let foo = {}

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

如果希望遵循依赖项注入模式,则需要将该实例注入任何想要修改该实例的类中

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的依赖项注入将所有导入(自定义元素和属性除外)视为单例。您甚至可以进一步导入
容器本身,并使用它从函数中获取类,等等。这很有帮助,但是如何处理MyClass中异步设置的属性呢?我知道您只是想查看下面的答案。其中一个真的很好。