javascript - vue如何绑定动态属性为根级响应?
迷茫
迷茫 2017-04-17 15:24:23
[HTML讨论组]
用户需要填写多个被保险人的信息,但是被保险人数n是从上一页传过来的。由于 Vue 不允许动态添加根级响应式属性,所以你必须在初始化实例前声明根级响应式属性。但被保人list长度是动态的,那么该如何绑定所有的被保人信息相关数据。例如

n=1时:

insurant: [
    {
        "insurantName": null,
                "mobileTelephone": null,
                "certificateNumber": null,
                "sex": null,
                "birth": null
    }
]

n=2时:

insurant: [
    {
        "insurantName": null,
         "mobileTelephone": null,
         "certificateNumber": null,
         "sex": null,
         "birth": null
    },
    {
        "insurantName": null,
         "mobileTelephone": null,
         "certificateNumber": null,
         "sex": null,
         "birth": null
    }
]

初始化时

<template>
    <p v-for="n in insurant.length">
        <input v-model="insurant[n].insurantName">
    </p>
</template>
data(){
    return {
        insurant: []
    }
}

当被保人数n是动态时,v-model="insurant[n].insurantName"会报错。这种情况该如何在template里绑定被保人insurant所有数据呢?求指教多谢

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
阿神

你可以试试: https://jsfiddle.net/milu2003...
我的例子可以通过。

你的循环有问题把。

<p v-for="n in insurant.length">
        <input v-model="insurant[n].insurantName">
    </p>

你这个循环写法很奇怪。我特意去vue官网看了例子,发现不是这样写的。
官网的例子是这样的:

<li v-for="item in items">
    {{ item.message }}
  </li>

https://cn.vuejs.org/v2/guide...

你这里的n输出1、2.那么insurant[n]出错是必然的。

PHP中文网
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
</head>
<body>
    <p id="app">
        <input type="number" v-model="count" />
        <p v-for="i in count">
            <com1></com1>
        </p>
        <button @click="submit">submit</button>
    </p>

    <script src="http://cdn.bootcss.com/vue/2.1.0/vue.min.js"></script>

    <script>
        Vue.component('com1', {
            template: '<input type="text" v-model="name" />',
            data() {
                return {
                    name: null
                }
            }
        })

        new Vue({
            el: '#app',
            data() {
                return {
                    count: 3
                }
            },
            methods: {
                submit() {
                    console.log(this.$children.map(t => t.name))
                }
            }
        })
    </script>
</body>
</html>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号