Ich versuche, unerwartetes Verhalten in einer NativeScript-Anwendung zu vermeiden.In NativeScript mit Angular, wie bekomme ich ein Interface-Element die ID?
Wenn ich auf jeden Bildschirm gehe, der ein Suchfeld (SearchBar) System hat, setzt der Fokus automatisch auf das Suchfeld.
Dann bekam ich Hilfe mit einem Freund, der mir eine Funktion gab, um dieses Problem zu lösen. Aber das Problem, mit dem ich gerade konfrontiert bin, ist, dass ich das Interface-Element nicht bekommen kann. Ich habe den folgenden Code:
import {Component} from "@angular/core";
import {Page} from "ui/page";
import frame = require("ui/frame");
@Component({
selector: "clientes",
templateUrl: "pages/clientes/clientes.html",
styleUrls: ["pages/clientes/clientes.common.css",
"pages/clientes/clientes.css"]
})
export class ClientesPage {
page;
constructor(private _router: Router) {
this.page = <Page>frame.topmost().currentPage;
this.removeSearchFocus();
}
removeSearchFocus() {
var parent = this.page.getViewById('box-lista');
var searchBar = this.page.getViewById('barra-busca');
console.log(JSON.stringify(parent)); // UNDEFINED
console.log(JSON.stringify(searchBar)); // UNDEFINED
if (parent.android) {
parent.android.setFocusableInTouchMode(true);
parent.android.setFocusable(true);
searchBar.android.clearFocus();
}
}
}
Und dann habe ich die Vorlage:
<Page.actionBar>
<ActionBar title="Clientes"></ActionBar>
</Page.actionBar>
<StackLayout orientation="vertical" id="box-lista">
<SearchBar hint="Buscar" cssClass="mh mv" id="barra-busca"></SearchBar>
</StackLayout>
Mein Ziel ist es, den Autofokus des Suchfeldes zu bekommen, aber ich kann nicht das Interface-Element erhalten.
Bitte ignorieren Sie den "privaten _router: Router" im Konstruktor. –