Я отчаянно пытаюсь сделать эту работу, но не нашел много документации об этом, за исключением этого урока .
Однако, похоже, что он написан на 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;
});
},
};
Спасибо, что просветили меня!