Значение привязки ListPicker всегда устанавливается на index, а не valueField - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть этот простой массив категорий, отображаемых в HTML-шаблон. Проблема заключается в том, что когда я выбираю элемент в списке, он устанавливает book.category на индекс элемента в ListPicker, а не на указанное значение valueField. Я не уверен, является ли это поведением по умолчанию, или я что-то упускаю.

Массив:

public categories = [
        {id: 6, name: "Horror"},
        {id: 8, name: "Biography"},
        {id: 5, name: "Drama"},
        {id: 7, name: "Comedy"},
        {id: 2, name: "Fiction"}
    ];

HTML (Угловое):

<ListPicker [items]="categories" textField="name" valueField="id" 
       [(ngModel)]="book.category"></ListPicker>

1 Ответ

0 голосов
/ 28 апреля 2019

Я смотрю на страницу ListPicker - NativeScript Docs и похоже, что отсутствует то, что вы не реализуете обработчик для события selectedIndexChange, который изменит ваш HTML-элемент на следующее:

<ListPicker [items]="categories" textField="name" valueField="id" [(ngModel)]="book.category" (selectedIndexChange)="yourSelectedIndexChangeHandlerFunction($event)"></ListPicker>

и в вашем файле .ts должна быть добавлена ​​функция, как показано ниже:

public yourSelectedIndexChangeHandlerFunction(args) {
    let picker = <ListPicker>args.object;
    this.id = picker.SelectedIndex; // assuming that your valuefield property is binding to this.id
}

Просто поиграйте с кодом выше и наслаждайтесь!

...