有了Aurelia,有没有办法将数据客户端存储在视图类之间进行重用?

By simon at 2018-02-28 • 0人收藏 • 50人看过

我有一些在多个视图之间访问的数据。如果有任何想要的 分享?在Angular中,我能够存储东西在根视镜或父母身上 控制器,那么它就可以用于所有的子视图/控制器。 我看不出有什么理由不断提取他们。

2 个回复 | 最后更新于 2018-02-28
2018-02-28   #1

服务/类创建为单例(除非您另外告诉DI, 我相信),所以使用服务类/模块和注入进入你的看法 控制器。 然后服务类可以使用内部的缓存数据,或者它可以取决于,比如说, http模块并根据需要提取数据。 编辑:添加了一些示例: 我怀疑这会直接起作用,但它应该给出基本的想法。 水珠al service“someGlobalStuff.js”:

import {inject} from 'aurelia-framework';
import {HttpClient} from 'aurelia-http-client';

@inject(HttpClient)
export class SomeGlobalStuff {

    constructor(http) {
        this.http = http;
    }

    getSomethingVital() {
        if (this.somethingVital) {
            return Promise.resolve(this.somethingVital)
        } else {
            // Do something with the HTTP client that will get the 
            // required stuff and return a promise
            return this.http.get(blah blah blah)
                .then(r => {
                    this.somethingVital = r;
                    return r; // 
                });
        }       
    }
}
还有一些使用它的东西:
import {inject} from 'aurelia-framework';
import {SomeGlobalStuff} from 'someGlobalStuff';

@inject(SomeGlobalStuff)
export class DataManager {

    constructor(someGlobalStuff) {
        this.globalStuff = someGlobalStuff;
    }

    doSomething() {
        this.globalStuff.getSomethingVital()
            .then(v => { 
                // Do something with it
            })      
    }
}

2018-02-28   #2

服务/类创建为单例(除非您另外告诉DI, 我相信),所以使用服务类/模块和注入进入你的看法 控制器。 然后服务类可以使用内部的缓存数据,或者它可以取决于,比如说, http模块并根据需要提取数据。 编辑:添加了一些示例: 我怀疑这会直接起作用,但它应该给出基本的想法。 水珠al service“someGlobalStuff.js”:

import {inject} from 'aurelia-framework';
import {HttpClient} from 'aurelia-http-client';

@inject(HttpClient)
export class SomeGlobalStuff {

    constructor(http) {
        this.http = http;
    }

    getSomethingVital() {
        if (this.somethingVital) {
            return Promise.resolve(this.somethingVital)
        } else {
            // Do something with the HTTP client that will get the 
            // required stuff and return a promise
            return this.http.get(blah blah blah)
                .then(r => {
                    this.somethingVital = r;
                    return r; // 
                });
        }       
    }
}
还有一些使用它的东西:
import {inject} from 'aurelia-framework';
import {SomeGlobalStuff} from 'someGlobalStuff';

@inject(SomeGlobalStuff)
export class DataManager {

    constructor(someGlobalStuff) {
        this.globalStuff = someGlobalStuff;
    }

    doSomething() {
        this.globalStuff.getSomethingVital()
            .then(v => { 
                // Do something with it
            })      
    }
}

登录后方可回帖

Loading...