首页 > 解决方案 > 在 nativescript-vue 视图模式组件中显示数组数据

问题描述

我想从父级创建一个模态组件并在列表视图中填充该模态中的数据

如果组件已经创建,我没有问题,但我希望在该父页面中创建组件

template>
    <Page class="page">
        <ActionBar title="Modal Data" class="action-bar"></ActionBar>
        <ScrollView>
            <StackLayout class="m-20">
                <Button text="Button" @tap="goToDetailPage" />
            </StackLayout>
        </ScrollView>
    </Page>
</template>

<script>
    const Detail = {
        template: `
    <Page>
        <ActionBar title="Asal Ikan" />
        <StackLayout>

            <ListView class="list-group" for="mylist in mylists" style="height:600px;">
                <v-template>
                <FlexboxLayout flexDirection="row" class="list-group-item">

                    <Label :text="mylist.name" style="width:100%;" @tap="closeModal" />

                </FlexboxLayout>
            </v-template>
            </ListView>



        </StackLayout>
     </Page>
        `
    };
    export default {
        data() {
            return {
                mylists: [{
                        code: "SL",
                        name: "Sinjai"
                    },
                    {
                        code: "MK",
                        name: "Makasar"
                    }
                ]
            };
        },
        methods: {

            goToDetailPage() {
                this.$showModal(Detail);
            }
        }
    };
</script>

我的列表中的数据未显示。这里是操场链接: https ://play.nativescript.org/?template=play-vue&id=WlzgRU&v=104

标签: vue.jsnativescriptnativescript-vue

解决方案


您可能希望在代码中改进/纠正许多事情。

  1. Detail是一个独立的组件,它无法访问您的Master(HelloWorld) 组件中的数据。如果您想访问相同的数据,mylists您应该传入。props
  2. APage只能在 a 中托管,Frame而有效的Page只能有ActionBar. 由于您尚未FrameDetail组件中定义 a,因此它将无效。
  3. 使用 ListView 使用itemTap事件而不是向单个组件添加事件侦听器。

更新游乐场


推荐阅读