NativeScript автозаполнение данных с удаленного сервера - PullRequest
0 голосов
/ 20 мая 2019

Я перехожу по этой ссылке для получения автозаполнения данных с удаленного сервера.

Я использую NativeScript с Angular.Вот мои изменения в данном коде, возвращают мне

Необработанный отказ Обещание: не могу прочитать свойство 'jsonUrl' из неопределенного;

ngOnInit() {
    this.jsonUrl = 'mycustomerurl';
    let that = this;
    let options = this.createRequestHeader();
    this.autocomplete.autoCompleteTextView.loadSuggestionsAsync = function (text) {
        const promise = new Promise(function (resolve, reject) {
          http.request({
            url: this.jsonUrl + '/' + text,
            method: "GET",
            headers: options,
           }).then(function (r: any) {
                let d = r.content;
                alert(r.content.length); // Undefined
                console.error(d); // Data exists
                alert(d.length); // Undefined
                const items: Array<TokenModel> = new Array();
                for (let i = 0; i < d.length; i++) { // Not going inside loop.
                    items.push(new TokenModel(d[i].label, null));
                }
                resolve(items);
            }).catch((err) => {
                const message = 'Error fetching remote data from ' + that.jsonUrl + ': ' + err.message;
                console.log(message);
                alert(message);
                reject();
            });
        });

        return promise;
    };

  }

private createRequestHeader() {
    // set headers here e.g.
    const tokenInfo = appSettings.getString('TokenInfo');
    let headers = new HttpHeaders({
        Authorization: `Bearer ${tokenInfo}`,
        "Content-Type": "application/json",
     });

    return headers;
  }

Я получаю удаленный в следующем формате отmy url https://mysite/api/SearchName/rk где rk - текст пользователя для фильтра с удаленного компьютера.

[
    {
        "label": "GLOBAL AGENCIES LTD",
        "id": "P000003",
    "val": "100.00"
    },
    {
        "label": "NEW MARKETING LTD",
        "id": "P000004",
    "val": "200.00"
    }
]

При выборе пользователем метки я хочу выполнить некоторую операцию с ее "id" и "val".

Что еще мне здесь не хватает?

1 Ответ

0 голосов
/ 20 мая 2019

this не будет указывать на ваш компонент при вызове функции loadSugfestionsAsync. Используйте функцию стрелки для сохранения контекста или просто используйте that.jsonUrl, который уже содержит ссылку на контекст.

...