Vue组件

一、组件介绍

  • 每一个组件都是一个vue实例
  • 每个组件均具有自身的模板template,根组件的模板就是挂载点
  • 每个组件模板只能拥有一个根标签
  • 子组件的数据具有作用域,以达到组件的复用

二、局部组件

<div id="app">
<local-tag></local-tag>
<local-tag></local-tag>
</div>
<script>
var localTag = {
data () {
return {
count: 0
}
},
template: '<button @click="btnAction">局部{{ count }}</button>',
methods: {
btnAction () {
this.count ++
}
}
}
new Vue({
el: "#app",
components: {
'local-tag': localTag
}
})
</script>

三、全局组件

<div id="app">
<global-tag></global-tag>
<global-tag></global-tag>
</div>
<script>
Vue.component('global-tag', {
data () {
return {
count: 0
}
},
template: '<button @click="btnAction">全局{{ count }}</button>',
methods: {
btnAction () {
this.count ++
}
}
})
new Vue({
el: "#app"
})
</script>

四、父组件传递数据给子组件

  • 通过绑定属性的方式进行数据传递
<div id="app">
<global-tag :sup_data1='sup_data1' :supData2='sup_data2'></global-tag>
</div>
<script type="text/javascript">
Vue.component('global-tag', {
props:['sup_data1', 'supdata2'],
template: '<div>{{ sup_data1 }} {{ supdata2 }}</div>'
})
new Vue({
el: '#app',
data: {
sup_data1: '数据1',
sup_data2: '数据2'
}
})
</script>

五、子组件传递数据给父组件

  • 通过发送事件请求的方式进行数据传递
<div id="app">
<global-tag @send_action='receiveAction'></global-tag>
</div>
<script type="text/javascript">
Vue.component('global-tag', {
data () {
return {
sub_data1: "数据1",
sub_data2: '数据2'
}
},
template: '<div @click="clickAction">发生</div>',
methods: {
clickAction () {
this.$emit('send_action', this.sub_data1, this.sub_data2)
}
}
})
new Vue({
el: '#app',
methods: {
receiveAction (v1, v2) {
console.log(v1, v2)
}
}
})
</script>

六、父子组件实现todoList

<div id="app">
<div>
<input type="text" v-model='value'>
<button @click='click'>提交</button>
</div>
<ul>
<item
v-for='(e, i) in list'
:key='i'
:ele='e'
:index='i'
@delete='deleteAction'
></item>
</ul>
</div>
<script type="text/javascript">
Vue.component('item', {
props: ['ele', 'index'],
template: '<li @click="item_click">{{ ele }}</li>',
methods: {
item_click: function () {
this.$emit('delete', this.index)
}
}
})
new Vue({
el: '#app',
data: {
value: '',
list: [],
},
methods: {
click: function () {
this.list.push(this.value)
this.value = ''
},
deleteAction: function (index) {
this.list.splice(index, 1)
}
}
})
</script>

七、搭建Vue开发环境

1、安装nodeJS

2、安装脚手架

  • vue官网 => 学习 => 教程 => 安装 => 命令行工具(CLI)
安装全局vue:npm install -g @vue/cli

在指定目录创建vue项目:vue create my-project

进入项目目录启动项目:npm run serve

通过指定服务器路径访问项目页面:http://localhost:8080/

3、项目创建

babel:是一个 JavaScript 编译器。
eslint:是一个语法规则和代码风格的检查工具,可以用来保证写出语法正确、风格统一的代码。

4、vue基础模板

<template>

</template>
<script>
export default { }
</script>
<style scoped>
</style>
npm install -g vue-cli

vue init webpack my-project

npm install -g cnpm --registry=https://registry.npm.taobao.org

最新文章

  1. [Django]用户权限学习系列之Permission权限基本操作指令
  2. 你真的会玩SQL吗?删除重复数据且只保留一条
  3. LruCache缓存
  4. Hibernate 查询MatchMode的四种模式
  5. java如何得到GET和POST请求URL和参数列表(转)
  6. 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
  7. Java编程思想学习笔记_2(继承和多态)
  8. VMware虚拟机的CentOS无法上网的解决方法
  9. NServiceBus-进阶
  10. Delphi读取Word
  11. postgres 利用unique index代替 primay key
  12. C语言文件操作函数大全
  13. forfiles命令批处理删除过期文件
  14. PHP数组的基本操作及遍历数组的经典操作
  15. Linux CentOS 6 解决 Device eth0 does not seem to be present
  16. 【LeetCode】两数相加
  17. 问题解决java.lang.IllegalArgumentException at org.springframework.asm.ClassReader
  18. ASP.NET AJAX入门系列(7):使用客户端脚本对UpdateProgress编程
  19. mysql笔记-索引
  20. 【R】函数-字符处理函数

热门文章

  1. 74cms 注入exp
  2. Linux 入门记录:十七、Linux 命令行文本/文件处理工具
  3. tiny-rtems-src
  4. 大公司开源网址[www]
  5. 通过file中的字段查询MySQL内容
  6. 【java报错】Unknown character set index for field &#39;224&#39; received from server.
  7. linux删除乱码文件[转载]
  8. python_day4学习笔记
  9. HDU-1934
  10. Guid is not updated for cluster with specified cluster id; need to wait for hosts in this cluster to come up