最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

vue组件数据传递、父子组件数据获取,slot,router路由功能示例

来源:懂视网 责编:小采 时间:2020-11-27 21:59:55
文档

vue组件数据传递、父子组件数据获取,slot,router路由功能示例

vue组件数据传递、父子组件数据获取,slot,router路由功能示例:本文实例讲述了vue组件数据传递、父子组件数据获取,slot,router路由功能。分享给大家供大家参考,具体如下: 一、vue默认情况下,子组件也没法访问父组件数据 <!DOCTYPE html> <html lang=en> <head> <
推荐度:
导读vue组件数据传递、父子组件数据获取,slot,router路由功能示例:本文实例讲述了vue组件数据传递、父子组件数据获取,slot,router路由功能。分享给大家供大家参考,具体如下: 一、vue默认情况下,子组件也没法访问父组件数据 <!DOCTYPE html> <html lang=en> <head> <

1、子组件获取父组件data

方法一:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>
 <style>
 </style>
</head>
<body>
 <div id="box">
 <aaa></aaa>
 </div>
 <template id="aaa">
 <h1>11111</h1>
 <bbb :mmm="msg2" :my-msg="msg"></bbb>
 </template>
 <script>
 var vm=new Vue({
 el:'#box',
 data:{
 a:'aaa'
 },
 components:{
 'aaa':{
 data(){
 return {
 msg:111,
 msg2:'我是父组件的数据'
 }
 },
 template:'#aaa',
 components:{
 'bbb':{
 props:['mmm','myMsg'],//my-msg在这里要变成驼峰命名法
 template:'<h3>我是bbb组件->{{mmm}} <br> {{myMsg}}</h3>'
 }
 }
 }
 }
 });
 </script>
</body>
</html>

方法二:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>
 <style>
 </style>
</head>
<body>
 <div id="box">
 <aaa></aaa>
 </div>
 <template id="aaa">
 <h1>11111</h1>
 <bbb :mmm="msg2" :my-msg="msg"></bbb>
 </template>
 <script>
 var vm=new Vue({
 el:'#box',
 data:{
 a:'aaa'
 },
 components:{
 'aaa':{
 data(){
 return {
 msg:111,
 msg2:'我是父组件的数据'
 }
 },
 template:'#aaa',
 components:{
 'bbb':{
 props:{
 'm':String,//注明数据类型
 'myMsg':Number
 },
 template:'<h3>我是bbb组件->{{mmm}} <br> {{myMsg}}</h3>'
 }
 }
 }
 }
 });
 </script>
</body>
</html>

2、 父级获取子级数据

方法一:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>
 <style>
 </style>
</head>
<body>
 <div id="box">
 <aaa></aaa>
 </div>
 <template id="aaa">
 <span>我是父级 -> {{msg}}</span>
 <bbb @child-msg="get"></bbb>
 </template>
 <template id="bbb">
 <h3>子组件-</h3>
 <input type="button" value="send" @click="send">
 </template>
 <script>
 var vm=new Vue({
 el:'#box',
 data:{
 a:'aaa'
 },
 components:{
 'aaa':{
 data(){
 return {
 msg:'我是父组件的数据'
 }
 },
 template:'#aaa',
 methods:{
 get(msg){
 // alert(msg);
 this.msg=msg;
 }
 },
 components:{
 'bbb':{
 data(){
 return {
 a:'我是子组件的数据'
 }
 },
 template:'#bbb',
 methods:{
 send(){
 this.$emit('child-msg',this.a);
 }
 }
 }
 }
 }
 }
 });
 </script>
</body>
</html>

注意:

  • vm.dispatch(事件名,数据)子级向父级发送数据vm.dispatch(事件名,数据)子级向父级发送数据vm.broadcast(事件名,数据) 父级向子级广播数据
  • 配合: event:{}
  • 在vue2.0里面已经,报废了
  • slot:位置、槽口

    作用: 占个位置,不覆盖原先的内容

    类似ng里面 transclude (指令)

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>Document</title>
     <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>
     <style>
     </style>
    </head>
    <body>
     <div id="box">
     <aaa>
     <ul slot="ul-slot">
     <li>1111</li>
     <li>2222</li>
     <li>3333</li>
     </ul>
     <ol slot="ol-slot">
     <li>111</li>
     <li>222</li>
     <li>333</li>
     </ol>
     </aaa>
     <hr>
     <aaa>
     </aaa>
     </div>
     <template id="aaa">
     <h1>xxxx</h1>
     <slot name="ol-slot">这是默认的情况</slot>
     <p>welcome vue</p>
     <slot name="ul-slot">这是默认的情况2</slot>
     </template>
     <script>
     var vm=new Vue({
     el:'#box',
     data:{
     a:'aaa'
     },
     components:{
     'aaa':{
     template:'#aaa'
     }
     }
     });
     </script>
    </body>
    </html>
    
    

    效果图:

    vue-> SPA应用,单页面应用 vue-router路由

        vue-resouce    交互
        vue-router    路由
        路由:根据不同url地址,出现不同效果
        该课程配套用 0.7.13版本 vue-router
    主页    home
    新闻页    news

    html:

     <a v-link="{path:'/home'}">主页</a> 跳转链接
     展示内容:
     <router-view></router-view>
    
    

    js:

     //1. 准备一个根组件
     var App=Vue.extend();
     //2. Home News组件都准备
     var Home=Vue.extend({
     template:'<h3>我是主页</h3>'
     });
     var News=Vue.extend({
     template:'<h3>我是新闻</h3>'
     });
     //3. 准备路由
     var router=new VueRouter();
     //4. 关联
     router.map({
     'home':{
     component:Home
     },
     'news':{
     component:News
     }
     });
     //5. 启动路由
     router.start(App,'#box');
    
    

    跳转:

     router.redirect({
     '/':'/home'
     });
    
    

    下载vue-router:

    vue-router路由:

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>Document</title>
     <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>
     <script src="bower_components/vue-router/dist/vue-router.js"></script>
     <style>
     </style>
    </head>
    <body>
     <div id="box">
     <ul>
     <li>
     <a v-link="{path:'/home'}">主页</a>
     </li>
     <li>
     <a v-link="{path:'/news'}">新闻</a>
     </li>
     </ul>
     <div>
     <router-view></router-view>
     </div> 
     </div>
     <script>
     //1. 准备一个根组件
     var App=Vue.extend();
     //2. Home News组件都准备
     var Home=Vue.extend({
     template:'<h3>我是主页</h3>'
     });
     var News=Vue.extend({
     template:'<h3>我是新闻</h3>'
     });
     //3. 准备路由
     var router=new VueRouter();
     //4. 关联
     router.map({
     'home':{
     component:Home
     },
     'news':{
     component:News
     }
     });
     //5. 启动路由
     router.start(App,'#box');
     </script>
    </body>
    </html>
    
    

    跳转:

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>Document</title>
     <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>
     <script src="bower_components/vue-router/dist/vue-router.js"></script>
     <style>
     </style>
    </head>
    <body>
     <div id="box">
     <ul>
     <li>
     <a v-link="{path:'/home'}">主页</a>
     </li>
     <li>
     <a v-link="{path:'/news'}">新闻</a>
     </li>
     </ul>
     <div>
     <router-view></router-view>
     </div> 
     </div>
     <script>
     //1. 准备一个根组件
     var App=Vue.extend();
     //2. Home News组件都准备
     var Home=Vue.extend({
     template:'<h3>我是主页</h3>'
     });
     var News=Vue.extend({
     template:'<h3>我是新闻</h3>'
     });
     //3. 准备路由
     var router=new VueRouter();
     //4. 关联
     router.map({
     'home':{
     component:Home
     },
     'news':{
     component:News
     }
     });
     //5. 启动路由
     router.start(App,'#box');
     //6. 跳转
     router.redirect({
     '/':'home' //访问根目录时,跳转到/home
     });
     </script>
    </body>
    </html>
    
    

    感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。

    希望本文所述对大家vue.js程序设计有所帮助。

    声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文档

    vue组件数据传递、父子组件数据获取,slot,router路由功能示例

    vue组件数据传递、父子组件数据获取,slot,router路由功能示例:本文实例讲述了vue组件数据传递、父子组件数据获取,slot,router路由功能。分享给大家供大家参考,具体如下: 一、vue默认情况下,子组件也没法访问父组件数据 <!DOCTYPE html> <html lang=en> <head> <
    推荐度:
    标签: VUE slot sl
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top