Доступ к nativeView метки - PullRequest
       0

Доступ к nativeView метки

0 голосов
/ 27 декабря 2018

Мне нужно ограничить максимальное количество строк метки с многоточием.

С ядром NativeScript это будет работать.

var label = page.getViewById("label");

if (label.ios) {
    label.ios.numberOfLines = 2;
    label.ios.lineBreakMode = NSLineBreakMode.ByTruncatingTail;
} else if (label.android) {
    label.android.setMaxLines(2);
    label.android.setEllipsize(android.text.TextUtils.TruncateAt.END);
}

Но это не работает с vue, поскольку ios всегда возвращает undefined, несмотря ни на что.

<template>
    <Page>
        <StackLayout orientation="vertical">
            <Label ref="label" text="A big text"></Label>
        </StackLayout>
    </Page>
</template>

<script>
    export default {
        mounted() {
            let label = this.$refs.label; // works.

            //label.nativeView          <- works.
            //label.nativeView.ios      <- undefined.
            //label.nativeView.android  <- undefined.

            //It's weird, because if I list the keys of nativeView, the 'ios' property is present...
            for (let key in label.nativeView) {
                console.log(key);
            }
        }
    }
</script>

Я проверил это с помощью iphone 6 plus, iOS 12.1.2.У меня нет устройства Android для тестирования, я не знаю, будет ли результат ожидаемым.

Ссылка на игровую площадку с NativeScript Core ЗДЕСЬ .

Игровая площадкасвязь с NativeScript-Vue ЗДЕСЬ .

1 Ответ

0 голосов
/ 27 декабря 2018

Проблема не в Vue, а в том, когда именно вы открываете свой родной вид.Собственный вид может быть не готов, когда компонент смонтирован.Либо используйте loaded событие Page, как вы делаете в Core, либо используйте loaded событие Label, которое гарантирует создание собственного представления.

Обновление: Я обновил Детская площадка .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...