一、Vue对象的操作

1. 可以通过一个Vue对象操作另一个Vue对象

  1. var v1 = new Vue({
  2. el: "#app1",
  3. data: {title:”hello vuw!”}
  4. });
  5. var v2 = new Vue({
  6. el: "#app1",
  7. methods:{
  8. changev1title:function () {
  9. v1.title = "hello python!"
  10. },
  11. }
  12. });

2.Vue对象操作另一个Vue对象的内容,维度有两个,操作属性、操作方法

  1. 这些属性是datacomputed里定义的
  2. var v2 = new Vue({
  3. el: "#app1",
  4. methods:{
  5. changev1title:function () {
  6. v1.title = "hello python!"
  7. },
  8. v1upper: function () {
  9. v1.toUpperCase()
  10. }
  11. }
  12. });

 3.Vue的实例属性

直接通过对象的方式定义的属性,是来自于data或computed中的属性,但是vue对象中的el、data等等这些键也称为属性,这些属性是vue对象的实例属性!

注意:

1)ref的使用

在vue里面,往往使用ref属性来代替id属性的使用,那么就可以快速的通过的调用ref的值来获取页面中的某个元素。

  1. <button type="button" ref="mybtn1" @click="showVueObject">点我</button>
  2. showVueObject:function () {
  3. this.$refs.mybtn1.innerHTML = "hello"
  4. }

2)mount的使用

实现了页面元素与vue对象的动态绑定,之前都是通过el的方式绑定。

  1. <div id="app"></div>
  2. <script src="https://cdn.bootcss.com/vue/2.6.11/vue.js"></script>
  3. <script>
  4. var v1 = new Vue({
  5. template:"<h1>hello template</h1",
  6. });
  7. v1.$mount('#app');
  8. </script>

二、Vue的组件

Vue的一大特性:组件化。可以将vue对象作为一个组件,被反复的使用。

注册组件的方式有两种,全局注册和局部注册。

1.注册组件(全局注册)

Vue.component(“组件名”,{vue对象})

2.使用组件

在被vue对象绑定了的html元素中才可以使用组件,如果一个div没有被vue绑定,那么这个div中不能使用之前注册的组件。

  1. <div id="app">
  2. <model1></model1>
  3. <model1></model1>
  4. <model1></model1>
  5. </div>
  6. <script src="https://cdn.bootcss.com/vue/2.6.11/vue.js"></script>
  7. <script>
  8. Vue.component("model1",{
  9. template:"<div>{{title}}<button type='button' @click='mybtn'>点我</button> </div>",
  10. data:function(){
  11. return {
  12. title: "hello vue",
  13. }
  14. },
  15. methods: {
  16. mybtn: function () {
  17. alert('hello vue!!!');
  18. }
  19. }
  20. });
  21. new Vue({
  22. el: "#app",
  23. })

3.作为组件的vue对象的注意事项

特点1:

Vue.component(“组件名”,{vue对象}),这个vue对象和之前的vue对象的data属性的写法是由区别的

  1. new Vue({
  2. el: "#app",
  3. data: {
  4. name: xx”,
  5. age: 23,
  6. });
  7. Vue.component("model1",{
  8. data: function(){
  9. return {
  10. name: xx”,
  11. age: 23,
  12. }
  13. },
  14. });

特点2:

组建中template的值是一个字符串,其有且仅有一个根元素

错误:

template:"<div>{{title}}</div><button type='button' @click='mybtn'>点我</button>",

正确:

template:"<div>{{title}}<button type='button' @click='mybtn'>点我</button> </div>",

4.Vue组件的本地注册(局部注册)

Vue的全局注册,意味着在页面中任意一个被vue绑定的div中都以使用用全局注册的vue组件。但是,如果是对vue组件进行本地注册,那么在其他被vue绑定的div中,不能使用该组件。

  1. <div id="app">
  2. <model11></model11>
  3. </div>
  4. <div id="app1">
  5. <model11></model11>
  6. </div>
  7. <script src="https://cdn.bootcss.com/vue/2.6.11/vue.js"></script>
  8. <script>
  9. var model1 = {
  10. template:"<div><h1>{{title}}</h1><button type='button' @click='mybtn'>点我</button></div>",
  11. data:function(){
  12. return {
  13. title: "hello vue",
  14. }
  15. },
  16. methods: {
  17. mybtn: function () {
  18. alert('hello vue!!!');
  19. }
  20. }
  21. };
  22. new Vue({
  23. el: "#app", // 只有这个组件可以使用model11组件
  24. components:{
  25. "model11": model1,
  26. }
  27. });
  28. new Vue({
  29. el: "#app1", // 这个div对象不能使用model11组件
  30. })
  31. </script>  

三、Vue的生命周期

一个Vue对象会经历初始化、创建、绑定、更新、销毁等阶段,不同的阶段,都会有相应的生命周期钩子函数被调用,可以参考官方文档的生命周期示意图。

  1. <script src="https://cdn.bootcss.com/vue/2.6.11/vue.js"></script>
  2. <script>
  3. new Vue({
  4. el:"#app",
  5. data:{
  6. title:"this is title"
  7. },
  8. methods:{
  9. changeTitle:function(){
  10. this.title= "new title";
  11. },
  12. destroy:function(){
  13. this.$destroy();
  14. }
  15. },
  16. // ES5
  17. beforeCreate:function(){
  18. console.log("beforeCreate")
  19. },
  20. // ES6
  21. created(){
  22. console.log("created")
  23. },
  24. beforeMount(){
  25. console.log("beforeMount")
  26. // 3.一个页面中只有一个div,其他的都是vue组件
  27. // vue组件里的data必须使用function的形式对{}对象进行封装,防止对其他数据的修改。 注意,template里必须有
  28. // 一个根节点。
  29. },
  30. mounted(){
  31. console.log("mounted")
  32. },
  33. beforeUpdate(){
  34. console.log("beforeUpdate")
  35. },
  36. updated(){
  37. console.log("updated")
  38. },
  39. beforeDestroy(){
  40. console.log("beforeDestory")
  41. },
  42. destroyed(){
  43. console.log("destory")
  44. }
  45. })
  46. </script>

执行顺序:

ProductInfo.vue?ca1b:17 beforeCreate

ProductInfo.vue?ca1b:21 created

ProductInfo.vue?ca1b:24 beforeMount

ProductInfo.vue?ca1b:30 mounted

ProductInfo.vue?ca1b:30 beforeUpdate

ProductInfo.vue?ca1b:30 Update

ProductInfo.vue?ca1b:39 beforeDestory

ProductInfo.vue?ca1b:42 destory

Vue系列教程(二)之Vue进阶的更多相关文章

  1. [js高手之路] vue系列教程 - 事件专题(4)

    本文主要讲解事件冒泡,事件绑定的简写,事件默认行为,按键码等一系列与事件相关的知识. 一.事件绑定的简写,@事件类型.  之前我的[js高手之路] vue系列教程 - vue的事件绑定与方法(2) 用 ...

  2. Vue基础系列(二)——Vue中的methods属性

      写在前面的话: 文章是个人学习过程中的总结,为方便以后回头在学习. 文章中会参考官方文档和其他的一些文章,示例均为亲自编写和实践,若有写的不对的地方欢迎大家指出. 作者简介: 一个不知名的前端开发 ...

  3. 10min系列之二日志可视化进阶

    10min系列之二日志可视化进阶(作者原创,同步发布在github) 本文需要有一定的python和前端基础,如果没基础的,请关注我后续的基础教程系列博客 本文所有的demo,都是浏览器下展示的 原创 ...

  4. CRL快速开发框架系列教程二(基于Lambda表达式查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  5. C#微信公众号开发系列教程二(新手接入指南)

    http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...

  6. Android Studio系列教程二--基本设置与运行

    Android Studio系列教程二--基本设置与运行 2014 年 11 月 28 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处! 上面一篇博客,介绍了Studio的 ...

  7. NGUI系列教程二

    接下来我们创建一个Label,NGUI->Open the Widget Wizard,打开widgetTool对话框,在Template中选择Label,确定AddTo右侧选项为panel,点 ...

  8. 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级) 本章介绍的是企业库加密应用程序模块 ...

  9. 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级) 企业库加密应用程序模块提供了2种方 ...

  10. Fastify 系列教程二 (中间件、钩子函数和装饰器)

    Fastify 系列教程: Fastify 系列教程一 (路由和日志) Fastify 系列教程二 (中间件.钩子函数和装饰器) 中间件 Fastify 提供了与 Express 和 Restify ...

随机推荐

  1. 学习 27 门编程语言的长处,提升你的 Python 代码水平

    Python猫注:Python 语言诞生 30 年了,如今的发展势头可谓如火如荼,这很大程度上得益于其易学易用的优秀设计,而不可否认的是,Python 从其它语言中偷师了不少.本文作者是一名资深的核心 ...

  2. Jsp/Servlet文件的上传和下载

    文件上传的入门 文件上传的步骤:       总结实现思路: 1.创建核心上传类ServletFileUpload,这个时候需要一个工厂类 2.创建磁盘工厂类对象DiskFileItemFactory ...

  3. 背包问题-C语言实现

    转自:http://blog.csdn.net/tjyyyangyi/article/details/7929665 0-1背包问题 参考: http://blog.csdn.net/liwenjia ...

  4. Jaeger开发入门(java版)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. 用 shell 脚本做自动化测试

    前言 项目中有一个功能,需要监控本地文件系统的变更,例如文件的增.删.改名.文件数据变动等等.之前只在 windows 上有实现,采用的是 iocp + ReadDirectoryChanges 方案 ...

  6. 40张图+万字,从9个数据类型帮你稳稳的拿捏Redis数据结构

    摘要:本文把Redis新旧版本的数据结构说图解一遍,共有 9 种数据结构:SDS.双向链表.压缩列表.哈希表.跳表.整数集合.quicklist.listpack. 本文分享自华为云社区<为了拿 ...

  7. MVC中的打印功能

    HTML页面: @{ Layout = "~/Views/Shared/_IframeLayout.cshtml";}@Scripts.Render(ViewBag.ScriptP ...

  8. host-manager does not exist or is not a readable directory

    当tomcat启动出现这个错误时,按照如下步骤可以解决: 1.删掉F:\tomcat20111101\apache-tomcat-6.0.26\conf\Catalina目录下的localhost文件 ...

  9. 【LeetCode】20. Valid Parentheses 有效的括号

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:有效,括号,括号匹配,栈,题解,leetcode, 力扣 ...

  10. 【LeetCode】203. Remove Linked List Elements 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 双指针 递归 日期 题目地址:https://lee ...