gpt4 book ai didi

javascript - 在带有 Angular 的 NativeScript 中,如何获取接口(interface)元素的 id?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:48:41 26 4
gpt4 key购买 nike

我试图避免 NativeScript 应用程序中的意外行为。

当我走进任何有搜索字段 (SearchBar) 的屏幕时,系统会自动将焦点放在搜索字段上。

然后我得到了 friend 的帮助,他给了我一个功能来解决这个问题。但是我现在面临的问题是我无法获取界面元素。我有以下代码:

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();
}

}
}

然后我有了模板:

<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>

我的目标是获取搜索栏的自动焦点,但我无法获取界面元素。

最佳答案

扩展 Nikolay 上面的答案以使用 @ViewChild将 #foo 添加到您的堆栈布局中,使其看起来像:

<StackLayout #foo ....

然后:

@ViewChild('foo') stackLayout: ElementRef;

ngAfterViewInit() {
let yourStackLayoutInstance = this.stackLayout.nativeElement;
}

它不会通过 ID 获取元素,但这是与元素交互的更多 ng2 方式,并使您的代码与 DOM 的耦合更加松散。

关于javascript - 在带有 Angular 的 NativeScript 中,如何获取接口(interface)元素的 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37884142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com