带有参数的getter的AngularJS资源

时间:2017-02-01 09:28:16

标签: javascript angularjs api typescript resources

我尝试使用angularResource.get(params)

访问API

该类的模型如下所示:

export class d_stp_searchbar implements Id_stp_searchbar {

    lperiode?: number;
    private _lsichtweise: number;
    scode?: string;
    sbezeichnung?: string;
    bezeichnungLabel: string;

    set lsichtweise(value) {
        this._lsichtweise = value;
        this.bezeichnungLabel = this.lsichtweise === 5 ? "Name" : "Bezeichnung";
    }

    get lsichtweise() {
        return this._lsichtweise;
    }

    public bezeichnung() {
        if (this.lsichtweise === 5) {
            this.bezeichnungLabel = "Name";
        } else {
            this.bezeichnungLabel = "Bezeichnung";
        }
    }
}

我调用api的函数如下所示:

searchStundenplan(params: d_stp_searchbar): angular.IPromise<any> {
    this.searchStundenplanParams = params;
    this.localStorageService.set("searchStundenplanParams", this.searchStundenplanParams);

    return this.searchStundenplanResource.get(params)
        .$promise.then((result) => {
            this.searchStundenplanResult = result;
            this.searchStundenplanResultChangedNotify();
        });
 }

我面临的问题是,将要调用的URL如下所示:

GET /api/search/Stundenplan?_lsichtweise=1&bezeichnungLabel=Bezeichnung&lperiode=86

但我希望,而不是使用_lsichtweise lsichtweise

我是否使用错误或有人知道,为什么不使用公共财产lsichtweise

提前致谢

1 个答案:

答案 0 :(得分:1)

我能够自己解决这个问题:

问题是,d_stp_searchbar仅在我们第一次调用它时才被正确实例化。

我们正在将JSON加载到TypeScript对象中,如下所示:

this.searchParamsStundenplan = localStorageService.get("searchParamsStundenplan") as d_stp_searchbar;

但是searchParamsStundenplan不包含(在提到的问题中)lsichtweise getter和setter,因为它是一个没有任何函数的普通数据对象。

所以我们必须通过以下方式创建一个实例:

let searchParamsStundenplanTemp = new d_stp_searchbar();
searchParamsStundenplanTemp.bindinglsichtweise = this.searchParamsStundenplan.bindinglsichtweise;
searchParamsStundenplanTemp.lperiode = this.searchParamsStundenplan.lperiode;
searchParamsStundenplanTemp.scode = this.searchParamsStundenplan.scode;
this.searchParamsStundenplan = searchParamsStundenplanTemp;

这种方式有效。