Vue构造器
<div class="app"> {{msg}} </div>
<script> //vue.js 组件其实都是被扩展的 vue实例。 var vm=new Vue({ //vue 实例 el:".app", data:{ msg:"hello vue.js" } }); // 响应式 //vm(构造器) 是 Vue 的实例 //vue 是 vm 的构造器 ( 构造函数) </script>
1){{msg}}会在视图中显示html
2){{msg}}在实例化后仍然保持数据响应vue
3){{msg}}尽管在console.log(data)中存在,但视图却找不到,且会报错编程
4)所以请不要试图在实例化后添加任何属性api
实例属性 方法以及生命周期
var data = { a : 1 } var vm = new Vue({ data : data }) vm.a === data.a // -> true // 设置属性也会影响到原始数据 vm.a = 2 data.a // -> 2 // ... 反之亦然 data.a = 3 vm.a // -> 3
var data = { a : 1 } var vm = new Vue({ el : '#example' , data : data }) vm.$data === data // -> true vm.$el === document .getElementById( 'example' ) // -> true // $watch 是一个实例方法 vm.$watch( 'a' , function ( newVal, oldVal ) { // 这个回调将在`vm.a` 改变后调用 })
created(建立后)mounted(载入后)updated(更新后)d(销毁后) estroyed(销毁后)
<p v-once>{{message}}</p>
还能够插入HTML使用指令v-html
Mustache{{}} 不能在 HTML 属性中使用,应使用 v-bind 指令
<div id="app-2"> <p v-once>这里的数据只会执行一次更新:{{me ssage}}</p> <div v-html="rawHtml">自定义html</div> </div>
var app2 = new Vue({ el:'#app-2', data:{ message:'第一次更新', rawHtml:'<ol><li>这里是自定义html</li><li>这里是自定义html</li></ol>' } }) app2.message = '第二次更新没有赋值';
v-if、v-on、v-bind
指令(Directives)是带有 v- 前缀的特殊属性。指令属性的值预期是单一 JavaScript 表达式(除了 v-for,以后再讨论)。指令的职责就是当其表达式的值改变时相应地将某些行为应用到 DOM 上。
{{ message | capitalize }}缓存
new Vue({ // 将message的值首字母变为大写,其它不变 filters: { capitalize: function (value) { if (!value) return '' value = value.toString() return value.charAt(0).toUpperCase() + value.slice(1) } } })
<!-- 完整语法 --> <a v-bind:href="url"></a> <!-- 缩写 --> <a :href="url"></a>
<!-- 完整语法 --> <a v-on:click="doSomething"></a> <!-- 缩写 --> <a @click="doSomething"></a>
<div id="app"> {{fullName}} <input v-model="firstName"/> <input v-model="lastName"/> </div> <script> var vm = new Vue({ el:'#app', data:{ firstName:"chao", lastName:"qiu", fullName:"qiuchao" }, computed:{ fullName:{ get:function(){ return this.lastName+this.firstName; } } }, methods:{ }, filters:{ }, watch:{ firstName:function(){ this.fullName=this.lastName+this.firstName; //return this.lastName+this.firstName; }, lastName:function(){ // return this.lastName+this.firstName; this.fullName=this.lastName+this.firstName; }, } }); </script>
计算属性基于本身的依赖进行缓存,只要message没发生变化,屡次访问该计算属性就会当即返回以前的计算结果,而没必要再次执行函数;app
而method调用总会执行该函数。异步
都是用来处理某些数据随其余数据的变更而变更的,但尽可能不要滥用watch,若是代码是命令式和重复的,先考虑下计算属性computed,可以使代码更简洁。函数
<div id="app"> {{msg}} <input v-model="msg"/> </div> <script> var app = new Vue({ el:"#app", data:{ msg:"" }, watch:{ msg:function(newValue){ localStorage.getItem("msg",newValue); } }, mounted:function(){ this.msg = localStorage.getItem("msg"); } }); </script>