Vuejs vm对象详解

vue数据是怎么驱动视图的?
一堆数据放在那里是不会有任何作用的,它必须通过我们的View Model(视图模型)才能操控视图。

图中的model其实就是数据,一般我们写成js对象的格式;

中间的这个所谓View Model,就是

var vm = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
我们把数据放到了vm里,然后把各种directive放到视图里,这样我们就可以以vm为媒介,通过改变数据来改变视图。

vm这个对象有哪些属性和方法

我们看到

var vm = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
误区

vm实际上是Vue这个类的一个实例,非常容易混淆的是,你会很容易的以为

vm.el == '#app';
vm.data== {
message: 'Hello Vue!'
};
vm.data.message =='Hello Vue!';
实际上这都是错误的,

{
el: '#app',
data: {
message: 'Hello Vue!'
}
}
这只是传进 Vue()的一个参数,它可不是vm本身

通过vm读取数据

实际上,vm.messasge == 'Hello Vue!', vm的属性是直接跟数据的key绑定的(至于怎样绑定的现在不用管),这是一种代理属性;

这个数据是响应式(reactive)的

var data = { a: 1 }
var vm = new Vue({
data: data
})
vm.a === data.a // -> true
// 设置vm数据会使原来的数据发生改变
vm.a = 2
data.a // -> 2
// ... 反过来亦然
data.a = 3
vm.a // -> 3
怎么通过vm获取其他属性

vm.el == '#app';
vm.data== {
message: 'Hello Vue!'
};
vm.data.message =='Hello Vue!';
以上虽然是错误的写法,有时候我们还是希望获得这些属性的,通过vm你需要这样写:

vm.$el === document.getElementById('app') // -> true
vm.$data === data // -> true
vm.$data.message ==='Hello Vue!' // -> true
这个$符代表的就是vm的真实属性了。

详细其他属性的请查阅文档Api

不仅有属性,还有方法

vm.$watch('a', function (newVal, oldVal) {
// 当vm.a发生改变的时候,这个回调函数将会被触发
})
详细其他方法,请查阅文档Api

Vuejs vm对象详解相关推荐

  1. JavaScript高级编程--对象详解

    对象详解 Object.prototype.hasOwnProperty() 返回布尔 (原型对象的方法) 表示是否是对象自身的属性.所有实例对象都可以访问 这个方法会查找一个对象是否有某个属性,但是 ...

  2. jQuery的deferred对象详解

    阮一峰大神的关于jQuery的deferred对象详解 http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_ ...

  3. 【ES6】Promise对象详解

    [ES6]Promise对象详解 一.Promise对象的含义 二.Promise对象的用法 三.Promise对象的几个应用[重点] 1.时间延迟函数 2.图片异步加载 查看更多ES6教学文章: 参 ...

  4. javascript BOM对象详解

    javascript BOM对象详解 目标:本章节将分为9点详细介绍有关BOM对象的知识点 1.什么是BOM 2.BOM的构成 3.顶级对象window 4.window对象常见事件(页面加载事件和体 ...

  5. Javascript中的Document对象详解

    Document对象详解 document 文挡对象 - JavaScript脚本语言描述           -------------------------------------------- ...

  6. 转载 雨松mono Unity获取游戏对象详解(来自我的长微博)

    Unity获取游戏对象详解(来自我的长微博) 转载 自 雨松mono 本文固定链接: http://www.xuanyusong.com/archives/2768 转载请注明: 雨松MOMO 201 ...

  7. html内置时间对象,JavaScript中的常用事件,以及内置对象详解

    原标题:JavaScript中的常用事件,以及内置对象详解 今天是刘小爱自学Java的第81天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: 学前端有一个非常权威的组织,也就是w3c,其有个专 ...

  8. JS----window对象详解

    一.说明 他是JS中最大的对象,它描述的是一个浏览器窗口,一般要引用他的属性和方法时,不需要用"Window.XXX"这种形式,而是直接使用"XXX".一个框架 ...

  9. Hibernate Criteria对象详解(条件查询)

    Hibernate Criteria对象详解 2014-9-1 16:21| 发布者: 传智特刊| 查看: 7290| 评论: 0 摘要: Hibernate框架是目前JavaEE软件开发的企业主流框 ...

  10. JS中的event 对象详解

    JS中的event 对象详解 JS的event对象 Event属性和方法: 1. type:事件的类型,如onlick中的click: 2. srcElement/target:事件源,就是发生事件的 ...

最新文章

  1. wds和dhcp分开做需要注意问题
  2. 专访William Kennedy:如何学习Go语言
  3. 高额奖金+实习机会+官方证书 丨微众银行第二届金融科技高校技术大赛正式启动...
  4. java 马士兵 io 代码分析_学习笔记-马士兵java- (IO初步)流
  5. android源代码
  6. Java基础知识——Java集合详解
  7. redis——数据结构(整数集合,压缩列表)
  8. HBase基本操作-java api
  9. IT部领导总结:不想被淘汰,看看快速做报表的技巧,甚至能养老
  10. Android 创建一个新的Activity
  11. SpringBoot注册组件之@Import@ImportResource@ComponentScan
  12. Python安装指南
  13. linux驱动 平台设备驱动模型
  14. Centos7下载和安装教程
  15. 使用Directshow + LAVFilter做一个万能格式的多媒体播放器
  16. 第三方支付接口开发原理
  17. Nginx日志管理——了解Nginx日志选项配置以及自定义日志格式使用
  18. java 实现 PTF远程连接带有中文下载,解决文件损失
  19. 【EXLIBRIS】名副其实
  20. python飞机大战源码素材包_python(pygame)滑稽大战(类似飞机大战) 教程

热门文章

  1. 硬件-1-打印机爱普生L3153墨仓式一体机
  2. Python 3. Python pyqt5 opencv 摄像头软件 相机 软件 有录像保存视频,保存图片,识别人脸位置功能
  3. html5游戏开发教程实战 五子棋 四子棋 围棋 翻转棋四种对弈游戏,仅仅100行代码
  4. Springboot 下 ModelAndView 的简单使用
  5. Hibernate拦截器字段加密解密
  6. 求助:Flash Builder 4.7早上开机后提示“未能创建视图: 插件“com.adobe.flexbuilder.as.editor”无法实例化
  7. 大学生html电影网页设计作业成品 我喜欢的电影榜单题材网页制作代码 简单静态网页模板下载
  8. SQLserver2019找不到配置管理工具解决办法
  9. 谷歌地球大陆版如何下载和使用,查看谷歌历史影像3D建筑街景等
  10. java 毕向东 内部类_毕向东Java视频学习笔记【Day10 多态+内部类】