Vue使用的一些实例
1.实现歌曲的点击切换。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
padding: ;
margin: ;
}
ul{
list-style:none ;
}
li{
border-bottom: solid 1px gray;
}
</style>
</head>
<body>
<div id="music">
//这里的路径就是下面data里面的,默认是第一首。 绑定一个播放完成的事件。
<audio :src="currentSong" autoplay="" controls="" @ended="nextSong"></audio> <ul>
//循环拿到歌名和索引,将索引传给点击事件。
<li v-for='(item,index) in songs' @click="clickHandler(index)">
<h3>歌名:{{item.name}}</h3>
<h3>歌手:{{item.author}}</h3>
</li> </ul>
</div> <script src="../day2/vue.js"></script>
<script>
//下面的数据是通过数据库拿,这里模拟一下。
var songs=[
{id:,src:'1.mp3',name:"lala",author:"Ryan"},
{id:,src:'2.mp3',name:"its my life",author:"alex"},
{id:,src:'3.mp3',name:"gogogo",author:"egon"},
]
var music = new Vue({
el:"#music",
data:{
songs:songs, //歌曲库
currentSong:'1.mp3', //歌曲路径
currentIndex:, //当前索引 },
methods:{
clickHandler(index){
//索引拿到后,去歌曲库拿到对应的歌曲路径。
this.currentSong=this.songs[index].src;
},
nextSong(){
alert()
//当歌曲播放完成这个事件才执行。
//首先是索引+1,然后去到索引+1后的歌曲的路径。
this.currentIndex++;
this.currentSong = this.songs[this.currentIndex].src,
} },
computed:{ },
created(){
//通常用来做页面的初始化
}
})
</script>
</body>
</html>
2.下面使用计算属性来实现一下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
padding: 0;
margin: 0;
}
ul{
list-style:none ;
}
li{
border-bottom: solid 1px gray;
}
</style>
</head>
<body>
<div id="music">
//这里的:src是绑定的计算属性,默认执行get方法。
<audio :src="currSong" autoplay="" controls="" @ended="nextSong"></audio> <ul>
<li v-for='(item,index) in songs' @click="clickHandler(index)">
<h3>歌名:{{item.name}}</h3>
<h3>歌手:{{item.author}}</h3>
</li> </ul>
<button @click="addOneSong">添加一首歌</button>
</div> <script src="../day2/vue.js"></script>
<script>
var songs=[
{id:1,src:'1.mp3',name:"lala",author:"Ryan"},
{id:2,src:'2.mp3',name:"its my life",author:"alex"},
{id:3,src:'3.mp3',name:"gogogo",author:"egon"},
]
var music = new Vue({
el:"#music",
data:{
songs:songs,
currentIndex:0, },
methods:{
clickHandler(index){
//这里只需要修改索引即可,下面的计算属性会监听到改变从而做出改变。
this.currentIndex=index
},
nextSong(){
alert(1);
//播放完也是只需要给索引加1即可。
this.currentIndex++;
},
addOneSong(){
//这里给歌曲库可以push一些歌曲,当然了下面的依然可以监听到,然后实时的在页面增加。(这里点击后,下面的111会打印。)
this.songs.push( {id:4,src:'4.mp3',name:"666",author:"egon2"})
} },
computed:{
currSong(){
console.log(111)
//实时监听songs数据的变化,添加数据songs变化了,所以这个函数会执行
//也就是增加一首歌,这个函数执行一次,111打印一次。
return this.songs[this.currentIndex].src
//只需要拿到索引的src即可。默认为0,这样上面的audio也就执行拿到了这个src。
} },
created(){
//通常用来做页面的初始化
}
})
</script>
</body>
</html>
3.组件的创建:
vue的核心基础就是组件的使用,玩好了组件才能将前面学的基础更好的运用起来。组件的使用更使我们的项目解耦合。更加符合vue的设计思想MVVM。
那接下来就跟我看一下如何在一个Vue实例中使用组件吧!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<Vheader></Vheader>
<Vheader></Vheader>
<Vheader></Vheader>
<Vheader></Vheader>
<Vheader></Vheader>
</div>
<script src="vue.js"></script>
<script>
//组件的创建
Vue.component('Vheader',{
data:function(){ //想要使用组件,data必须是个函数
return {
//必须要return,哪怕是个空对象
}
},
template:`<div class="header">
<div class="w">
<div class="w-l">
<img src="default.jpg"/>
</div>
<div class="w-r">
<button>登录</button><button>注册</button> </div>
</div>
</div>`
}) var app=new Vue({
el:"#app",
data:{},
methods:{},
computed:{},
})
</script>
</body>
</html>
组件是可复用的Vue实例,并且带有一个名字:在这个例子中是 <Vheader>。我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用:
组件是可以复用的,所以可以写多个。
<div id="app">
<Vheader></Vheader>
<Vheader></Vheader>
<Vheader></Vheader>
<Vheader></Vheader>
<Vheader></Vheader>
</div>
给Vheader组件中添加一个按钮,绑定数据属性count,然后你会发现点击按钮时,每个组件都会各自独立维护它的 count。因为你每用一次组件,就会有一个它的新实例被创建。
在创建组件过程中第一个参数是组件的名字,第二个参数是跟new Vue实例一样的options。跟实例对象不同的是有两点:
关于组件名的起名:https://cn.vuejs.org/v2/guide/components-registration.html
1、组件中没有el,因为el仅仅的是绑定Vue的根元素。
2、data属性不再是返回对象,而是返回一个函数。而且必须返回一个函数。
Vue使用的一些实例的更多相关文章
- Vue中通过Vue.extend动态创建实例
Vue中通过Vue.extend动态创建实例 在Vue中,如果我们想要动态地来控制一个组件的显示和隐藏,比如通过点击按钮显示一个对话框或者弹出一条信息.我们通常会提前写好这个组件,然后通过v-if = ...
- vue路由的简单实例
vue2.0 和 vue1.0 路由的语法还是有点稍微的差别,下面介绍一下vue-router 2的简单实例: <!DOCTYPE html> <html lang="en ...
- Vue.2.0.5-Vue 实例
构造器 每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例 启动的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 MVVM 模式, Vue 的设 ...
- Vue.js 基础指令实例讲解(各种数据绑定、表单渲染大总结)——新手入门、高手进阶
Vue.js 是一套构建用户界面的渐进式框架.他自身不是一个全能框架--只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动 ...
- vue单文件组件实例2:简单单文件组件
Introduce.vue: <template> <div class="intro"> 单位介绍 </div> </templat ...
- Vue学习1:实例及生命周期
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 04: vue生命周期和实例属性和方法
1.4 组件的生命周期 1.说明 1. Vue将组件看成是一个有生命的个体,跟人一样,定义了各个阶段, 2. 组件的生命周期:组件的创建过程 3. 组件生命周期钩子函数:当组件处在某个阶段,要执行某个 ...
- Vue.js Cookbook: 添加实例属性; 👍 axios(4万➕✨)访问API; filters过滤器;
add instance properties //加上$,防止和已经定义的data,method, computed的名字重复,导致被覆写.//可以自定义添加其他符号. Vue.prototype. ...
- Vue.js教程--基础(实例 模版语法template computed, watch v-if, v-show v-for, 一个组件的v-for.)
官网:https://cn.vuejs.org/v2/guide/index.html Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统. 视频教程:https: ...
随机推荐
- CentOS6.5 安装并配置vsftpd
一.获取root权限 su 输入root密码 二.检查是否安装 rpm -qa | grep vsftpd 如果安装,会显示安装版本号,没有就什么都不显示 三.若已安装过vsftpd,先卸载.卸载前, ...
- centos下mysql授予权限提示ERROR 1133 (42000): Can't find any matching row in the user table
错误: 给mysql对应的用户授予权限的时候提示报错: 解决方法: 后面才知道原来是同事这边新增了用户没有flush grant all privileges on *.* to 'user'@'%' ...
- KFCM算法的matlab程序(用FCM初始化聚类中心)
KFCM算法的matlab程序(用FCM初始化聚类中心) 在“聚类——KFCM”这篇文章中已经介绍了KFCM算法,现在用matlab程序对iris数据库进行实现,用FCM初始化聚类中心,并求其准确度与 ...
- java操作elasticsearch实现query String
1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...
- Python的datetime模块分析
datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1. datetime模块定义了5个类,分别是 1.datetime ...
- 用powershell实现自动化操作
每天登录OA太繁琐,公司OA又只允许用IE,本身写chrome扩展水平也不高,更搞不懂selenium 既然是windows下工作,当然还得微软的东东.研究了几天,才发现用powershell就很方便 ...
- python入门学习:3.操作列表
python入门学习:3.操作列表 关键点:列表 3.1 遍历整个列表3.2 创建数值列表3.3 使用列表3.4 元组 3.1 遍历整个列表 循环这种概念很重要,因为它是计算机自动完成重复工作的常 ...
- html 传递参数中文乱码 js获取参数乱码
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code HTML传递中文参数时,有乱码导致接收不到正确的数据.JS中可以使用encodeURI ...
- 【vue】vue +element 搭建项目,使用el-date-picker组件遇到的坑
1.html <el-form-item prop="dateTime"> <el-date-picker v-model="messageDataFo ...
- Node.js读取某个目录下的所有文件夹名字并将其写入到json文件
针对解决的问题是,有些时候我们需要读取某个文件并将其写入到对应的json文件(xml文件也行,不过目前用json很多,json是主流). 源码如下:index.js var fs = require( ...