Поиск данных с использованием Nativescript - PullRequest
0 голосов
/ 18 июня 2019

Я правильно получаю все данные из этой функции:

getallpharma() {
    this.pharma.mobile_base_pharmacyGetAll().subscribe(
        items => {
            this.items = items;
        },
        err => console.error('err', err),
        () => console.log('error')
    );
}

Это JSON

{ "StatusCode": 0,
"StatusMessage": "OK",
"StatusDescription": [
    {
        "pharmacy_id": "011E752345553380ABC13FFA163ECD15",
        "name": "Pharmacy",
        "email": "email@testpharmacy.com",
        "website": "testpharmacy.com",
        "address1": "Test Pharmacy, Test Country, Test City",

    },
    {
        "pharmacy_id": "011E762345552280FBC13FFA163ECD10",
        "name": "Test Pharmacy",
        "email": "email@testpharmacy.com",
        "website": "testpharmacy.com",
        "address1": "Test Pharmacy, Test Country, Test City",

    }
]

}

Для поиска я использую эту функцию, которая не 't работа:

public items: Array<FarmaciaData> = [];
 public myData: ObservableArray<FarmaciaData> = new ObservableArray<FarmaciaData>();

    public onSearchSubmit(args) {
        let searchBar = <SearchBar>args.object;
        let searchValue = searchBar.text.toLowerCase();
        this.myData = new ObservableArray<FarmaciaData>();
        if (searchValue !== "") {
            for (let i = 0; i < this.items.length; i++) {
                if (this.items[i].name.toLowerCase().indexOf(searchValue) !== -1) {
                    this.myData.push(this.items[i]);
                }
            }
        }
    }

Можете ли вы поделиться со мной какой-либо идеей, как искать данные в этой функции?

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Это чисто логично,

    let searchBar = <SearchBar>args.object;
    let searchValue = searchBar.text.toLowerCase();
    this.filteredCountries = searchValue.length ? this.countries.filter(item => {
        return item['name'].toLowerCase().includes(searchValue)
    }) : this.countries;

, когда у вас нет текста для поиска, возвращайте все, когда вы конвертируете имя в нижний регистр и фильтруете.

Обновленная игровая площадка

0 голосов
/ 19 июня 2019

Вам необходимо использовать фильтр функцию массива. Я обновил вашу игровую площадку здесь .

в вашем .ts

let searchBar = <SearchBar>args.object;
        let searchValue = searchBar.text.toLowerCase();
        if (searchValue) {
            this.filteredCountries = this.countries.filter(item => {
                return item['name'].includes(searchValue)
            })
        } else {

        }

P.S. В моем проекте я создал канал для повторной фильтрации отфильтрованных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...