Nativescript-vue Автозаполнение с использованием удаленного JSON - PullRequest
0 голосов
/ 17 марта 2019

Я отчаянно пытаюсь сделать эту работу, но не нашел много документации об этом, за исключением этого урока .

Однако, похоже, что он написан на TypeScript (что странно), поэтому использование этого кода приводит к 2 ошибкам:

'types' могут использоваться только в файле .ts.

Вот код:

import * as http from 'tns-core-modules/http';

export default {
  template: `
  <Page>
    <StackLayout>
      <Label text="Select airport"></Label>
      <RadAutoCompleteTextView ref="autocomplete"
                               displayMode="plain"
                               suggestMode="Suggest"
                               :items="dataItems">
        <SuggestionView ~suggestionView suggestionViewHeight="300">
          <StackLayout v-suggestionItemTemplate orientation="vertical" padding="10">
            <v-template>
              <Label :text="item.text"></Label>
            </v-template>
          </StackLayout>
        </SuggestionView>
      </RadAutoCompleteTextView>
    </StackLayout>
  </Page>
  `,
  data () {
    return {
      dataItems: new ObservableArray(),
    };
  },
  mounted () {
    const jsonUrl = 'https://raw.githubusercontent.com/telerik/nativescript-ui-samples/master/examples-data/airports.json';

    this.$refs.autocomplete.setLoadSuggestionsAsync((text) => {
      const promise = new Promise((resolve, reject) => {
          http.getJSON(jsonUrl).then((r: any) => {
              const airportsCollection = r.airports;
              const items: Array<TokenModel> = new Array();
              for (let i = 0; i < airportsCollection.length; i++) {
                  items.push(new TokenModel(airportsCollection[i].FIELD2, null));
              }
              resolve(items);
          }).catch((err) => {
              const message = `Error fetching remote data from ${jsonUrl}: ${err.message}`;
              console.log(message);
              alert(message);
              reject();
          });
      });

      return promise;
    });
  },
};

Спасибо, что просветили меня!

1 Ответ

0 голосов
/ 18 марта 2019

Попробуйте удалить наборы.

http.getJSON(jsonUrl).then((r: any) => {

станет

http.getJSON(jsonUrl).then((r) => {

Также

const items: Array<TokenModel> = new Array();

станет

const items = new Array();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...