从模型中获取页面视图元素 class
Getting a page view element from a model class
我有一个模型 class 并且想要访问 ui 元素。
frameModule.topmost().getViewById("id") 或
frameModule.topmost().page.getViewById("id")
不工作。
据我了解您的需求,希望此解决方案对您有所帮助。
在 XML 中,假设您有 UI 个带有 ID 的元素。你会在控制器中得到它。例如:
在page.xml
中:
<Label id="test"/>
在 page-view-model.js
的绑定对象 class 中,创建一个具有标签类型的 属性:
var labelModule = require("ui/label");
var Label = labelModule.Label;
class Someclass extends Observable {
public label: Label;
}
在page.js
中:
function pageLoaded(args) {
var page = args.object;
var myLabel = page.getViewById("test");
var context = new Someclass();
page.bindingContext = context;
context.label = myLabel;
}
有很多方法可以获取对 Page
对象的引用。文档是了解它们的很好参考:https://v7.docs.nativescript.org/ui/components/page#page-reference
为了回答您的问题,在视图模型 class 中获取对 Page
对象的引用的常用方法是使用 EventData
传递给每个事件,例如 tap
点击 Button
时的事件。
onButtonTap(args: EventData) {
const button = args.object as Button;
const page = button.page;
// ...
}
我有一个模型 class 并且想要访问 ui 元素。
frameModule.topmost().getViewById("id") 或
frameModule.topmost().page.getViewById("id")
不工作。
据我了解您的需求,希望此解决方案对您有所帮助。
在 XML 中,假设您有 UI 个带有 ID 的元素。你会在控制器中得到它。例如:
在page.xml
中:
<Label id="test"/>
在 page-view-model.js
的绑定对象 class 中,创建一个具有标签类型的 属性:
var labelModule = require("ui/label");
var Label = labelModule.Label;
class Someclass extends Observable {
public label: Label;
}
在page.js
中:
function pageLoaded(args) {
var page = args.object;
var myLabel = page.getViewById("test");
var context = new Someclass();
page.bindingContext = context;
context.label = myLabel;
}
有很多方法可以获取对 Page
对象的引用。文档是了解它们的很好参考:https://v7.docs.nativescript.org/ui/components/page#page-reference
为了回答您的问题,在视图模型 class 中获取对 Page
对象的引用的常用方法是使用 EventData
传递给每个事件,例如 tap
点击 Button
时的事件。
onButtonTap(args: EventData) {
const button = args.object as Button;
const page = button.page;
// ...
}