Я использую NativeScript Angular2, и на моей странице я добавил ListPicker для выбора пользователем. Ниже приведен фрагмент кода для HTML файла:NativeScript Angular2 - ListPicker не работает на Android
<ListPicker #languagePicker id="languagePicker" [visibility]="langSelectStatus()" [items]="languages" class="mek-select-field" (selectedIndexChange)="selectedIndexChanged(languagePicker)"
>
</ListPicker>
Ниже приводится CSS:
.mek-select-field {
height: 70px;
border-color: lightblue;
border-width: 1px;
margin: 0;
}
Я нашел код работает без каких-либо проблем на IOS, следующий скриншот: ListPicker on iOS
Однако на Android обнаружено, что ListPicker не работает. Он отображает список, но не может прокручиваться между определенными параметрами. Ниже приведен скриншот: ListPicker on Android
Ниже приводится информация среда:
- NativeScript версия: 2.4.0
- NativeScript-Угловая версия: 1.1.3
- NativeScript Android Продолжительность версии: 2.4.1
- Android эмулятор: API 25 Nexus 6
Я новичок в NativeScript и не уверен, связано ли это с моей средой или нет.
Любые советы будут очень желанными. Заранее спасибо
[Обновлен 2016 26 Ной]: Исследуя образец, как советовал Нико и больше испытаний, я обнаружил, что поведение появляется только тогда, когда значение параметра является выборками из бекенда через Http службу. Например, в примере по создавшему-listpicker.component.ts класса, если изменить список опций для извлечения из Http бэкэнда, как показано ниже кода:
export class CreatingListPickerComponent {
public pokemons: Array<string>;
public picked: string;
constructor(private http: Http) {
this.pokemons = [];
this.http.get('http://192.168.31.120:3000/pokemons').subscribe(
res => {
let list = res.json();
console.log(`Pokemon list: ${list}`);
for (var i = 0; i < list.length; i++) {
this.pokemons.push(pokemonList[i]);
}
}
);
/* for (var i = 0; i < pokemonList.length; i++) {
this.pokemons.push(pokemonList[i]);
}*/
}
public selectedIndexChanged(picker) {
console.log('picker selection: ' + picker.selectedIndex);
this.picked = this.pokemons[picker.selectedIndex];
}
}
Где конечная точка будет ответ с точно таким же значением, что и жёстко стоимость. Когда я запускаю вышеуказанный код в Android (как эмулятор, так и устройство), я обнаружил, что ListPicker не сможет время от времени показывать какие-либо параметры (или только первый). Это очень легко переделать. У iOS нет этой проблемы.
Я считаю, что существуют некоторые проблемы, когда параметры ListPicker исходят из бэкэнда Http, где присутствует некоторая задержка.
Пожалуйста, советы Кларенс
Найдено больше информации.В ListPicker «элементы» поступают для вызова API службы Http, который я вызываю в http в ngOnInit(), а затем заполняю переменную «Языки», когда результат возвращается из бэкэнд. Похоже, что на Android, когда элементы были заполнены позже, ListPicker не обновляется. Хотя в iOS эта проблема не найдена. –
Привет @ Кларенс. Хорошей отправной точкой является просмотр этого примера проекта - https://github.com/NativeScript/nativescript-sdk-examples-ng, где показано, как использовать все компоненты NativeScript в проекте NativeScript Angular 2 , Именно для вашего случая вы можете рассмотреть пример здесь: https://github.com/NativeScript/nativescript-sdk-examples-ng/tree/master/app/ui-category/listpicker/creating-listpicker. –
Привет @Nikolay, большое спасибо за ваш ответ. Я проверил в примере кода и добавил дополнительную информацию в свой пост для справки. большое спасибо. –