Fix android search-bar bug (#5046)

* Fix android search-bar bug

Searching twice for the same item in the search bar leads to a bug where `submit` event won't be raised.
This PR fixes https://github.com/NativeScript/NativeScript/issues/5039

* test: include new test page
This commit is contained in:
Hristo Hristov
2017-11-10 15:46:23 +02:00
committed by GitHub
parent 011be368b1
commit 729b068e7b
5 changed files with 48 additions and 0 deletions

View File

@ -0,0 +1,27 @@
import { Observable } from 'tns-core-modules/data/observable'
import { ObservableArray } from 'tns-core-modules/data/observable-array'
import { SearchBar } from 'tns-core-modules/ui/search-bar';
export class Issue5039ViewModel extends Observable {
private _items = ['apple', 'apple cider', 'apple pie', 'orange', 'orange juice', 'strawberry', 'blueberry']
public items = new ObservableArray()
constructor(private _searchBar: SearchBar) {
super()
this.items.push(this._items)
}
onSubmit() {
this.filter(this._searchBar.text);
}
clearSearch() {
this.filter();
}
filter(value: string = '') {
this.items.splice(0, this.items.length) // remove all items
this.items.push(this._items.filter(i => -1 !== i.indexOf(value)))
}
}

View File

@ -0,0 +1,9 @@
import { Issue5039ViewModel } from './issue-5039-view-model'
import { SearchBar } from "tns-core-modules/ui/search-bar";
import { Page } from "tns-core-modules/ui/page";
export function navigatingTo(args) {
const page = <Page>args.object;
const searchBar = <SearchBar>page.getViewById("searchBar")
page.bindingContext = new Issue5039ViewModel(searchBar);
}

View File

@ -0,0 +1,10 @@
<Page xmlns="http://schemas.nativescript.org/tns.xsd" navigatingTo="navigatingTo">
<StackLayout>
<SearchBar id="searchBar" hint="Search" submit="{{ onSubmit }}" clear="{{ clearSearch }}" />
<ListView items="{{ items }}">
<ListView.itemTemplate>
<Label text="{{ $value }}" />
</ListView.itemTemplate>
</ListView>
</StackLayout>
</Page>

View File

@ -13,5 +13,6 @@ export function loadExamples() {
const examples = new Map<string, string>();
examples.set("issue-4147", "search-bar/issue-4147");
examples.set("search-bar", "search-bar/search-bar");
examples.set("issue-5039","search-bar/issue-5039");
return examples;
}

View File

@ -43,6 +43,7 @@ function initializeNativeClasses(): void {
}
this[SEARCHTEXT] = newText;
this[QUERY] = undefined;
return true;
}