Vue 学习第四天 -2

4. Vue  操作Dom ,获得Dom节点,  ref 属性, $refs

ref 引用组件 ,然后实现相关数据和 方法的引用,差不多就是父组件调用子组件,

<body>

     <!--Vue 操作DOM ,-->

    <div id="app">

<input type="button" value="操作DOMtest" @click="Domtest">

<h3 ref="myh3">哈哈,试试Vue 操作DOM </h3>

<login ref="mylogin"></login>

</div>

<script>

var login ={

template : '<h1>登录组件</h1>',

data (){

return {

msg : '1243546'

};

},

methods :{

show (){

console.log('show子组件');

}

}

}

var vm = new Vue({

el : '#app',

data : {

},

methods : {

Domtest(){

console.log('test');

//通过 ref 属性, 然后是通过$refs 调用看看

console.log(this.$refs.myh3.innerText);

//reference 引用类型,,,---referenceError

console.log(this.$refs.mylogin.msg);

this.$refs.mylogin.show();

}

},

components : {

login

}

});

</script>

 

5.路由学习,

后端路由:普通网站,访问的任何资源都是URL地址,服务器处理相关请求,

前端路由:只在前端页面或者功能之间的跳转,不会发送新的请求。通过hash来实现,# 号,通过hash  来切换不同页面(组件),称作前端路由,

5.1 下载vue-router

5.2  注册,监听,匹配,展示,放到router-view

5.3 router-link   redirect  使用

5.4 加动画

<!doctype html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="Generator" content="EditPlus®">

<meta name="Author" content="">

<meta name="Keywords" content="">

<meta name="Description" content="">

<title>组件的开发</title>

<script src="../../lib/vue.min.js">   </script>

<script src="../../lib/vue-router.js"></script>

<link href="../../lib/bootstrap.min.css" rel="stylesheet">

</head>

<body>

     <!--路由规则中传递参数,-->

    <div id="app">

<!-- //4. 显示 -->

<router-link to="/login">登录</router-link>

<router-link to="/register">注册</router-link>

<router-view>

</router-view>

</div>

<script>

//1.先声明 两个组件对象 ,,,,,

var login ={

template : '<h1>登录组件</h1>'

};

var register ={

template : '<h1>注册组件</h1>'

};

//2. 创建路由对象。创建路由规则

var routerObj = new VueRouter({

routes : [

//给一个默认的 定向

{path :'/',redirect : login},

{path : '/login',component: login},

{path : '/register', component :register}

]

}); //VueRouter

var vm = new Vue({

el : '#app',

data : {

},

methods : {

},

//3. 第三步,挂在早vm 上,

router : routerObj

});

</script>

</body>

</html>

 

 

5.5 路由规则中传递/定义参数:如何传递,传递以后如何拿,

5.5.1 直接在后面 假设query属性,query?id=10&name=lsj&...

1.如何取 首先通过 控制台vm  查看,然后寻找其中的属性,

2. 取到以后,$route.query.id  $route.query.name  

<body>

     <!--路由规则中传递参数,-->

    <div id="app">

<!-- //4. 显示 -->

<!--在路由中,使用查询字符串,给路由传递参数,则不需要修改 路由规则的path 属性-->

<router-link to="/login?id=10&name=lsj">登录</router-link>

<router-link to="/register">注册</router-link>

<router-view>

</router-view>

</div>

<script>

//1.先声明 两个组件对象 ,,,,,

var login ={

// template : '<h1>登录组件{{msg}}</h1>', 使用data 传递,或者直接拿

template : '<h1>登录组件{{$route.query.id}}---{{$route.query.name}}</h1>',

data () {

return {

msg : '123',

};

},

created(){ //组件的生命周期钩子函数

//获得相关的参数,,,

console.log(this.$route);

console.log(this.$route.query.id);

this.msg = this.$route.query.id;

}

 

};

var register ={

template : '<h1>注册组件</h1>'

};

 

//2. 创建路由对象。创建路由规则

var routerObj = new VueRouter({

routes : [

//给一个默认的 定向

{path :'/',redirect : login},

{path : '/login',component: login},

{path : '/register', component :register}

]

 

}); //VueRouter

 

var vm = new Vue({

el : '#app',

data : {

},

methods : {

},

//3. 第三步,挂在早vm 上,

router : routerObj

});

 

5.5.2 路由规则传参2 :  使用params属性

 两个地方修改:

{   router-link to="/login/10/yx   pah里面修改 /login/:id/:name       }

params.id   params.name

<body>

     <!--路由规则中传递参数,-->

    <div id="app">

<!-- //4. 显示 -->

<!--在路由中,使用查询字符串,给路由传递参数,则不需要修改 路由规则的path 属性-->

<router-link to="/login/10/yx">登录</router-link>

<router-link to="/register">注册</router-link>

<router-view>

</router-view>

</div>

<script>

//1.先声明 两个组件对象 ,,,,,

var login ={

// template : '<h1>登录组件{{msg}}</h1>', 使用data 传递,或者直接拿

template : '<h1>登录组件{{$route.params.id}}---{{$route.params.name}}</h1>',

data () {

return {

msg : '123',

};

},

created(){ //组件的生命周期钩子函数

//获得相关的参数,,,

console.log(this.$route);

console.log(this.$route.params.id);

this.msg = this.$route.params.id;

}

 

};

var register ={

template : '<h1>注册组件</h1>'

};

 

//2. 创建路由对象。创建路由规则

var routerObj = new VueRouter({

routes : [

//给一个默认的 定向

{path :'/',redirect : login},

{path : '/login/:id/:name',component: login},

{path : '/register', component :register}

]

}); //VueRouter

var vm = new Vue({

el : '#app',

data : {

},

methods : {

},

//3. 第三步,挂在早vm 上,

router : routerObj

});

</script>

</body>

 

 

6.  路由的嵌套  使用children 属性实现的  ,其中,还需要一个子  坑  <router-view>

子坑  <router-view></router-view> <!--让这个起作用,,-->

 

<body>

     <!--需求,这个是实现动画,-->

    <div id="app">

<router-link to="Account">登录</router-link>

<router-view></router-view>

</div>

<template id="temp1">

<div>

<h1>Account组件</h1>

<router-link to="/Account/login">登录</router-link>

<router-link to="/Account/register">注册</router-link>

<router-view></router-view> <!--让这个起作用,,-->

</div>

</template>

 

<script>

var login = {

template :'<h4>这个是登录</h4>'

};

var register = {

template :'<h4>这个是注册</h4>'

};

var Account = {

template : '#temp1'

};

var accountObj = new VueRouter({

routes :[

{

path :'/Account',

component : Account,

//使用children 实现子路由,path 前面不要带 /

children : [

{path : 'login' ,component : login},

{path : 'register',component : register}

]

},

//{path : '/Account/login' ,component : login}, 不能这样写。。。

//{path : '/Account/register',component : register}

]

});

var vm = new Vue({

el : '#app',

data : {

},

methods : {

},

router : accountObj

});

</script>

 

 

7. 命名 视图实现经典布局

<body>

     <!--Vue 路由命名视图 , 实现经典布局-->

    <div id="app">

<router-view class="header"></router-view> <!--上-->

<div class="container">

<router-view name="left" class="left"></router-view> <!--左 ,只放指定name 的组件-->

<router-view name="main" class="right"></router-view> <!--右-->

</div>

</div>

<script>

var header ={

template : '<h1 style="background:red;text-align:center">头部区域</h1>'

};

var leftBox = {

template : '<h1 style="background:green;text-align:center">left 左边栏区域</h1>'

};

var mainBox = {

template : '<h1 style="background:blue;text-align:center">right 右边栏区域</h1>'

};

//创建路由对象 ,已经相关路由规则

var router = new VueRouter({

routes : [

{path :'/',components :{

'default' : header,

'left' : leftBox,

'main' : mainBox

 

}},

]

});

var vm = new Vue({

el : '#app',

data : {

},

methods : {

},

router : router //这里不知道出问题吗??

});

</script>

</body>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值