vue的实例

创建一个vue实例的写法和创建一个变量一样

var vm = new Vue{{   //我们一般用vm来接收vue的实例,vm是 ViewModel的缩写

}}

然后,我们就可以给vue实例添加属性和方法了

var vm = new Vue{{
  data: {            //属性的声明,不同的属性用逗号隔开
    test1: 123,           //属性值可以是数字,字符串,对象,数组等
    test2: 'abc',
    test3: {
      test1: [3,4,5]
      test2: [{},{},{}]
    }
  }
  methods: {              //方法的声明,不同的方法用逗号隔开
    func1: function () {     //这是vue的标准写法
      //to do sth..
    },
    func2 () {              //这是ES6的写法
      //to do sth...
    }
  }
}}

这里有一个非常重要的地方:
当一个 Vue 实例被创建时,它向 Vue 的"响应式系统"中加入了其 "data" 对象中能找到的所有的属性(已经存在的属性)。
当这些属性的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。
也就是说,能够触发响应式更新的数据,一开始必须是data属性中已经存在的属性,
如果后来给data对象中新增了一些属性,那么这些新增的属性,是不会触发响应式渲染的。
(需要注意的是:这个新增的属性只是不会触发响应式渲染,但是属性值的确是有了,
后续赋值使用也会是最新的数据,只是前台页面显示不会更新)

***********
(
让我很疑惑的是:虽然语法规则说新添加的属性是不触发响应式的更新的。
但是很多时候我测试的时候,的的确确会触发响应式更新,
但这个码代我也没动,过几天再测试的话,
竟然有不触发响应式更新了,
所以,我很纳闷,为什么会发生这种清空,缓存吗?
)
***********

经测试,data下面没有某个属性时(直接关系),使用这个属性(无论是v-if="test",v-show="test"还是{{test}})
都会报error: test not defined

但是如果使用某个属性下没有的属性时(间接关系),使用v-if="test.abc" {{test.abc}} 哪怕test没有abc这个属性,也不会出问题
(这个需要深入了解机制和原理,找到原因)

-----
Object.freeze()
vue官方说使用Object.freeze()方法可以阻止修改现有属性的特性和值,并阻止添加新属性。
但是,我在测试demo中,并没有生效

(以后找到原因后回来解释一下)

-----
$
vue中的 $ 符号

vue官方提供了很多实用性的属性和方法
这些属性和方法都是以$使用的
比如:
this.$data //代表本实例的data属性
this.$set() //官方封装的set方法,用来使新增属性成为响应式触发
总之,这些以 $ 开头的方法或属性,都是vue官方封装好的很实用的方法或属性

vue的实例的更多相关文章

  1. Vue.js实例练习

    最近学习Vue.js感觉跟不上节奏了,Vue.js用起来很方便. 主要实现功能,能添加书的内容和删除.(用的Bootstrap的样式)demo链接 标题用了自定义组件,代码如下: components ...

  2. Vue组件实例间的直接访问

    前面的话 有时候需要父组件访问子组件,子组件访问父组件,或者是子组件访问根组件. 在组件实例中,Vue提供了相应的属性,包括$parent.$children.$refs和$root,这些属性都挂载在 ...

  3. vue.js实例对象+组件树

    vue的实例对象 首先用js的new关键字实例化一个vue el: vue组件或对象装载在页面的位置,可通过id或class或标签名 template: 装载的内容.HTML代码/包含指令或者其他组件 ...

  4. 前端MVC Vue2学习总结(二)——Vue的实例、生命周期与Vue脚手架(vue-cli)

    一.Vue的实例 1.1.创建一个 Vue 的实例 每个 Vue 应用都是通过 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 ...

  5. Vue2.5笔记:Vue的实例与生命周期

    理解与认识 Vue 的实例是我们学习 Vue 非常重要的一步,也是非常必须的,因为实例是它的一个起点,也是它的一个入口,只有我们创建一个 Vue 实例之后,我们才行利用它进行一些列的操作. 首先 Vu ...

  6. Vue.js—组件快速入门及Vue路由实例应用

    上次我们学习了Vue.js的基础,并且通过综合的小实例进一步的熟悉了Vue.js的基础应用.今天我们就继续讲讲Vue.js的组件,更加深入的了解Vue,js的使用.首先我们先了解一下什么是Vue.js ...

  7. 【05】Vue 之 实例详解与生命周期

    Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着. ...

  8. 黑马vue---31-32、vue过滤器实例

    黑马vue---31-32.vue过滤器实例 一.总结 一句话总结: vue内部的东西,无论是过滤器还是组件,都是键值对的方式 1.过滤器的定义语法? Vue.filter('过滤器的名称', fun ...

  9. vue第六单元(vue的实例和组件-vue实例的相关属性和方法-解释vue的原理-创建vue的组件)

    第六单元(vue的实例和组件-vue实例的相关属性和方法-解释vue的原理-创建vue的组件) #课程目标 掌握vue实例的相关属性和方法的含义和使用 了解vue的数据响应原理 熟悉创建组件,了解全局 ...

随机推荐

  1. GPRS网络条件下TCP、UDP的比较

    使用场景:使用GPRS的场合. 名词解释:NAT(Network Address Translation,网络地址转换) 中国移动的GPRS网络是使用的虚拟IP地址,需要通过移动的虚拟地址转换路由器进 ...

  2. arcgis 线段合并

    对于上面这种这种有一个字段相同的 线段,使用 使用后生成的矢量如下

  3. mysql主键问题

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_22314145/article/details/80824660 MySQL主键 一. MyS ...

  4. Python学习---模版/包的概念

    1.1. 模块/包的概念 在Python中,一个.py文件就称之为一个模块(Module) 模块一共三种: python标准库 第三方模块 应用程序自定义模块 模块的使用:模块是用来组织函数的 解释器 ...

  5. Jsonp实现Ajax跨域Demo

    JSONP 1.一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面.动态网页.web服务.WCF,只要是跨域请求,一律不准: 2.不过我们又发现,Web页面上调用j ...

  6. 邮件营销巧妙添加GIF让您的邮件动起来

    动态图片远比静态图片要吸引人,因此近年来,一些营销人员也开始越来越频繁的使用GIF动画图片,适当的穿插和点缀动态图片,能够生动形象的表达出 主题,并且时不时令读者忍俊不禁.尤其是做邮件营销的,如果能在 ...

  7. 使用burpsuite对移动app抓包分析

    测试移动APP的联网请求,需要获取路径或者参数的时候,使用该工具burpsuite非常方便! 要求: 移动终端和PC处于同一个wlan环境下 第一步:获取本地地址,cmd-->ipconfig  ...

  8. 【剑指offer】数组中的逆序对

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mmc_maodun/article/details/27520535 转载请注明出处:http:// ...

  9. gluoncv 目标检测,训练自己的数据集

    https://gluon-cv.mxnet.io/build/examples_datasets/detection_custom.html 官方提供两种方案,一种是lst文件,一种是xml文件(v ...

  10. idea中使用maven

    转:https://www.cnblogs.com/kagome2014/p/8431064.html 对于新版的IDEA可以直接打开Maven项目,但是对于旧版的IDEA需要使用Maven命令生成项 ...