2017-02-01 6 views
0

Я пытаюсь получить доступ к API с angularResource.get(params)AngularJS ресурсов с геттер в Params

Модель для класса выглядит следующим образом:

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"; 
     } 
    } 
} 

Функция, где я называю апи выглядит следующее:

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(); 
     }); 
} 

проблема I'am облицовка, что URL, который будет называться выглядит так:

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

, но я хочу, что вместо _lsichtweiselsichtweise будет использоваться.

Я использую это неправильно или кто-то знает, почему не используется общественная собственность lsichtweise?

Заранее спасибо

+1

В вашем классе 'd_stp_searchbar' нет открытого свойства' lsichtweise'. Вы создали магическую функцию 'get', но' angular.IPromise' распознает только классы и игнорирует функцию магического геттера. Просто добавьте свойство public class 'lsichtweise: number;'. Может быть, 'angular.IPromise' вызовет функцию волшебного геттера, и с вами все будет в порядке. – lin

+0

Другой способ - переназначить ваши атрибуты модели, в то время как они анализируются как params в 'angleular.IPromise'. Какое решение вы бы предпочли? – lin

+0

Проблема заключалась в том, что 'd_stp_searchbar' был создан только в первый раз, когда мы его вызвали. Таким образом, ваш комментарий не был решением, а игровым мастером для дальнейших исследований. Спасибо! – BinaryFr3ak

ответ

1

я был в состоянии исправить это сам:

Проблема была, что d_stp_searchbar был только воплощенные правильно в первый раз, мы назвали его.

Мы загрузки JSON в объект машинописи как это:

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

, но тогда searchParamsStundenplan не содержит (в вопросе упоминается) lsichtweise геттер и сеттер, потому что это был обычный объект данных без какого-либо функции.

Таким образом, мы должны были создать экземпляр следующим образом:

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

Этот путь он работал.