javascript - 使用vue.js实现联动效果
天蓬老师
天蓬老师 2017-04-10 16:14:39
[JavaScript讨论组]

想用vue.js写一个联动效果,按照自己的思路实验了下,并没有成功。请大家指点下
我的思路是:通过遍历YX数组,如果某个对象的text和第一个select的selected value相同,则显示对应院系的专业

<p id="test">
    <select v-model="A">
    <option v-for="yx in YX">
        {{yx.text}}
    </option>
</select>


<select name="ZY">
    <option v-for="zy in {{ selection }}">
        {{zy.text}}
    </option>
</select>
</p>

<script>
new Vue({
    el:'#test',
    data:{
        YX:[
            {
                text:'计信院',
                ZY:[
                    {text:'软件工程'},
                    {text:'计算机科学与技术'},
                    {text:"信息安全"},
                ]
            },
            { 
                text:'商学院',
                ZY:[
                    {text:'旅游管理'},
                    {text:'工商管理'},
                    {text:"行政管理"},
                ]
            },       
        ]
    },
    computed:{
        selection: {
            get: function() {
                var obj;
                var ZY = eval(this.YX)
                for(obj in ZY)
                {
                    if(A == obj.text)
                        B = obj.ZY
                }
                return B
            }
        }
    }
});
</script>
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(5)
PHPz

建议还是多看官方文档, 我的实现参考:http://jsfiddle.net/x1p47kpr/

巴扎黑

eval都出来,这种问题用js判断下一个value再设置下另一个的option元素就完了,为何非要用框架解决

怪我咯

看看这个是不是你想要的

天蓬老师
<p id="test">
    <select v-model="A">
        <option v-for="yx in YX">
            {{yx.text}}
        </option>
    </select>

    <select>
        <option v-for="zy in selection">
            {{zy.text}}
        </option>
    </select>


</p>

<script>
var vm = new Vue({
    el:'#test',
    data:{
        YX:[
            {
                text:'计信院',
                ZY:[
                    {text:'软件工程'},
                    {text:'计算机科学与技术'},
                    {text:"信息安全"},
                ]
            },
            { 
                text:'商学院',
                ZY:[
                    {text:'旅游管理'},
                    {text:'工商管理'},
                    {text:"行政管理"},
                ]
            },       
        ]
    },
    computed:{
        selection: function() {
            for (var i = 0; i < this.YX.length; i++) {
                if (this.YX[i].text === this.A) {
                    return this.YX[i].ZY;
                }
            }
        }
    }
});
迷茫

没用过vue,不过个人觉得官方docs肯定能解决题主的问题 。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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