我想将自定义NS核心/第三方组件集成到Angular模板中。我的组件的属性也应该在模板中设置。NativeScript Angular:具有属性的自定义组件的registerElement
鉴于从tns
所生成的样品,我已做了以下步骤:
- 登记自己的组件:
registerElement("TestView",() => require("./test-view").TestView);
- 创建元件:
- 使用它在角模板:
import observable = require("data/observable");
import stackLayout = require("ui/layouts/stack-layout");
import label = require("ui/label");
import button = require("ui/button");
import { View } from "ui/core/view";
import { Property, PropertyChangeData, PropertyMetadata, PropertyMetadataSettings } from "ui/core/dependency-observable";
export class TestView extends stackLayout.StackLayout {
public static userNameProperty = new Property(
"userName",
"TestView",
new PropertyMetadata("", PropertyMetadataSettings.None)
);
public get userName(): string {
return this._getValue(TestView.userNameProperty);
}
public set userName(newName: string) {
this._setValue(TestView.userNameProperty, newName);
}
constructor() {
super();
var counter: number = 0;
var lbl = new label.Label();
var btn = new button.Button();
btn.text = "Tap me " + this.userName + "!";
btn.on(button.Button.tapEvent, (args: observable.EventData) => {
lbl.text = "Tap " + counter++;
});
this.addChild(lbl);
this.addChild(btn);
}
}
<StackLayout class="p-20">
<TestView userName="Felix"></TestView>
</StackLayout>
的组件显示,但按钮文本不显示 “点击我[用户名]”,因为userName的未定义。
传递参数作为组件属性的正确方法是什么?
更新
读完Data Binding和Properties,我增强上面的代码样品与userName
属性的定义。但它仍然没有设置,相当令人沮丧... 任何人都可以提供一些见解吗?非常感谢。