访问标签的nativeView

时间:2018-12-27 18:27:53

标签: vue.js nativescript

我需要使用省略号溢出限制标签的最大行数。

使用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 HERE的游乐场链接。

带有NativeScript-Vue HERE的游乐场链接。

1 个答案:

答案 0 :(得分:1)

问题不在于Vue,而是在您访问本机视图的确切时间。安装组件时,本机视图可能未准备好。您可以像在Core中一样使用loaded的{​​{1}}事件,也可以使用Page本身的loaded事件,以确保创建了本机视图。

更新:我已经更新了您的Playground