Как установить значения по умолчанию для свойств в составных компонентах в NativeScript? - PullRequest
0 голосов
/ 07 января 2019

Я пишу составной компонент на NativeScript, для которого я расширяю GridLayout. У меня есть свойства (в основном) работают, но мне нужно установить значения по умолчанию для них.

Если я установлю значения в конструкторе, попытки установить значения для этих свойств в CSS будут неудачными: функция setNative не будет вызываться для значений CSS - только для установки значения в конструкторе.

Я также использую функцию "getDefault" в свойстве, чтобы попытаться установить значение по умолчанию. Функция не вызывается.

Композитный-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» будет вызван для оценки значения по умолчанию, но это не так. Значением по умолчанию остается «auto», что совсем не то, что я хочу, чтобы оно было по умолчанию.

...