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. DLL调用的两种方式(IDE:VC6.0,C++)

    原文:http://www.cnblogs.com/Pickuper/articles/2050409.html DLL调用有两种方式,一种是静态调用,另外一种是动态调用 (一)静态调用 静态调用是一 ...

  2. Android中获取TextView行数

    项目中发现,如果直接通过TextView.getLineCount()方法获取行数时,总是0,研究发现,setText()后立即调用getLineCount(), 这时TextView还未完成meas ...

  3. C#网易云音乐播放器

    效果图: •实现教程: 打开VStudio 2015 #新建一个windows界面工程然后按我的界面来添加控件代码如下 namespace NeteaseMuisc { partial class M ...

  4. Scrum团队开发

    Scrum学习心得 什么是scrum Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发.Scrum包括了一系列实践和预定义角色的过程骨架.Scrum中的主要角色包括同项目经理类似的Scrum主 ...

  5. androidwebview timeout

    public class MyWebViewClient extends WebViewClient { boolean timeout; public MyWebView() { timeout = ...

  6. percona toolkit之slave工具

    1:pt-slave-find ,主要是查找MySQL的层级,其实我感觉这个用处不是很大,因为层级比较多架构本身就很少,查看从库的话一般情况我们可以通过show slave hosts查看(不过不能显 ...

  7. easyUI datagrid 重复发送URL请求

    如果在table属性中配置了URL参数,在初始化datagrid时,会发送一次url请求.或者在js中datagrid{url:''}时,也会自动发送一次url请求. 在初始化datagrid时,我并 ...

  8. java代码修改了之后运行仍然是原程序

    有的时候java代码改了之后但是运行的程序却没有发生改动,这是什么情况呢?可能懂得的人都觉得十分简单,但对于我这样的小白来说确实很费力.java代码更改后需要编译生成.class文件,说的直白点,这个 ...

  9. 一道算法题-八皇后问题(C++实现)

    八皇后问题 一.题意解析 国际象棋中的皇后,可以横向.纵向.斜向移动.如何在一个8X8的棋盘上放置8个皇后,使得任意两个皇后都不在同一条横线.竖线.斜线方向上?八皇后问题是一个古老的问题,于1848年 ...

  10. jave web 监听器。

    https://www.imooc.com/video/5664 Web监听器由Servlet规范提供的,可以监听客户端的请求以及服务端的操作,即监听ServletContext.HttpSessio ...