我正在用NativeScript编写一个复合组件,为此我扩展了GridLayout。我的属性(大多数情况下)可以正常工作,但是我需要为其设置默认值。
如果我在构造函数中设置值,则尝试在CSS中为这些属性设置值的尝试将失败:CSS值将不会调用“ setNative”函数-仅在构造函数中设置该值。 / p>
我还在属性上使用“ getDefault”功能来尝试设置默认值。该函数不会被调用。
composite-component.ts
@CSSType("CompositeComponent")
export class CompositeComponent extends GridLayout {
constructor() {
super();
// If I set this here, none of the attempts to set it in CSS will work
// this.height = 50;
let innerComponent = builder.load(__dirname + '/composite-component.xml') as View;
innerComponent.bindingContext = this;
this.addChild(innerComponent);
}
[heightProperty.getDefault](): PercentLength {
return 50;
}
[heightProperty.setNative](value: PercentLength) {
// For some reason, it is necessary to call this from here, otherwise the CSS won't work at all...
this.notifyPropertyChange("height", value);
}
}
home.component.html
<StackLayout verticalAlignment="center">
<CompositeComponent image="res://icons/icn_person/icn_person"></CompositeComponent>
</StackLayout>
home.component.scss
CompositeComponent {
background-color: #ff0000;
}
我希望调用“ heightProperty.getDefault”来评估默认值,但事实并非如此。默认值保持为“自动”,这根本不是我想要的默认值。