欢迎转载,转载请注明出处。

前言

  学习本系列Vue知识,需要结合本系列的一些demo。你可以查看我的 Github 或者直接下载 ZIP包 。

  建议学习本系列之前已经会一个其他的前端框架,了解计算属性,数据绑定,模板语言等。零基础的话,看本教程可能不太适合。

  上一篇文章已经讲了前六个demo。

七、Vue实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vue-demos</title>
<script src="../vue.js"></script>
</head>
<body>
<!--
Vue实例
-->
<div id="app">
<p>{{ message }}</p>
<button v-on:click="sayHello">sayHello</button>
</div>
<script>
//每个 Vue应用都是通过构造函数 Vue 创建一个 Vue的根实例 启动的 var app = new Vue({});
//在实例化 Vue 时,需要传入一个选项对象,它可以包含数据data、模板template、挂载元素el、方法methods、生命周期钩子等选项
var app = new Vue({
el: '#app',
data: { //每个 Vue 实例都会代理其 data 对象里所有的属性
message: 'Hello Vue' //app.message = app.data.message
},
methods: {
sayHello: function(){
alert('hello');
}
},
created: function(){ //实例生命周期的不同阶段,如created、 mounted、 updated 、destroyed 。钩子的 this 指向调用它的 Vue 实例。一些用户可能会问 Vue.js 是否有“控制器”的概念?答案是,没有。组件的自定义逻辑可以分布在这些钩子中。
// this 指向 vm 实例
console.log(this.message + '实例被创建');
}
});
</script>
</body>
</html>

八、注册全局组件

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vue-demos</title>
<script src="../vue.js"></script>
</head>
<body>
<!--
全局组件
在Vue里,一个组件实质上是一个拥有预定义选项的一个Vue实例。
要注册一个全局组件,你可以使用 Vue.component(tagName, options)
-->
<div id="app">
<!-- 引用组件 -->
<my-component></my-component>
</div>
<script>
// 注册组件。要确保在初始化根实例之前注册了组件
Vue.component('my-component', {
template: '<div>A custom component!</div>'
});
// 创建根实例
var app = new Vue({
el: '#app'
});
</script>
</body>
</html>

九、注册局部组件

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vue-demos</title>
<script src="../vue.js"></script>
</head>
<body>
<!--
局部注册组件
不必在全局注册每个组件。通过使用组件实例选项注册,可以使组件仅在另一个实例/组件的作用域中可用
-->
<div id="app">
<!-- 引用组件 -->
<my-component></my-component>
</div>
<script>
// 注册局部组件
var Child = {
template: '<div>A child component!</div>'
}
// 创建根实例.并调用局部组件
var app = new Vue({
el: '#app',
components: {
'my-component': Child
}
});
</script>
</body>
</html>

十、props传递数据

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vue-demos</title>
<script src="../vue.js"></script>
</head>
<body>
<!--
父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息
prop 是单向绑定的:当父组件的属性变化时,将传导给子组件。
父组件使用 props 把数据传给子组件,子组件需要显式地用 props 选项 声明 “prop”:
-->
<div id="app">
<!-- 引用组件 -->
<child message="hello!"></child>
</div>
<script>
Vue.component('child', {
// 声明父组件的属性,props。然后在本子组件中就可以使用这个属性。
props: ['message'],
template: '<span>{{ message }}</span>'
}) var app = new Vue({
el: '#app'
});
</script>
</body>
</html>

十一、自定义事件events

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vue-demos</title>
<script src="../vue.js"></script>
</head>
<body>
<!--
父组件使用 props 把数据传给子组件,但如果子组件要把数据传递回去,那就是自定义事件!
自定义事件也是使用v-on绑定。
使用 $on(eventName) 监听事件
使用 $emit(eventName) 触发事件 本例在app实例里定义了事件changeMsg().在子组件中去触发这个事件。从而实现子组件的数据传递到父组件
--> <div id="app">
<p>Message: {{message}}</p>
<child></child>
</div> <template id="temp">
<div>
<input v-model="msg" placeholder="please input your message!" />
<button @click="test(msg)">change message</button>
</div>
</template> <script>
Vue.component('child', {
//指定模板为id为"temp"标签
template: "#temp",
//定义模板中初始化的值,data应该是一个函数
data: function() {
return {
msg: "hello",
}
},
methods: {
//当点击按钮时会触发的事件(这个事件中会调用自定义的事件)
test: function(msg){
console.log('be click' + msg);
app.$emit('changeMsg', msg);
}
} }) var app = new Vue({
el: '#app',
//初始化messages数组
data: {
message: 'hello',
}
}); //自定义事件
app.$on('changeMsg', function (msg) {
console.log('我是自定义事件')
app.message = msg;
})
</script>
</body>
</html>

最新文章

  1. php 计算两个日期之间的差,得出:年月日时分秒
  2. C# 平时碰见的问题【2】
  3. JavaScript escape encodeURI encodeURIComponent() 函数
  4. [一]初识JFreeChart
  5. curl 解析
  6. Swift的初始化方法
  7. ios 后台模式
  8. [LeetCode][Python]14: Longest Common Prefix
  9. JavaScript系列----作用域链和闭包
  10. python实现XSS过滤(BeautifulSoup和白名单处理)
  11. Springdata mongodb 版本兼容 引起 Error [The &#39;cursor&#39; option is required, except for aggregate with the explain argument
  12. linux链接
  13. 菜鸟玩云计算之十四:克隆虚拟机及ssh登录的问题
  14. Docker:测试环境的准备-centos7上安装docker
  15. 使用boost.python封装C++库
  16. css 修改svg图标的颜色(不修改fill)
  17. 服务器管理员密码修改后SQL_Server_2008无法启动
  18. docker 安装软件
  19. nopi设置excel只读
  20. Nodejs 第一站

热门文章

  1. 乐字节-Java8新特性之Stream流(上)
  2. 批处理TOMCAT8.0自动重启任务
  3. Java基础——Servlet(三)
  4. 如何调试JDK源代码并查看局部变量值
  5. SpringCloud微服务架构第三篇
  6. HDU3622(二分+2-SAT)
  7. HTML初学小技巧
  8. [USACO18FEB]Slingshot
  9. 洛谷P4198 楼房重建(线段树)
  10. JS中的兼容问题总结