#### 绑定 v-bind v-bind attribute :将这个元素节点的 `title` attribute 和 Vue 实例的 `message` property 保持一致 ```javascript
鼠标悬停几秒钟查看此处动态绑定的提示信息!
var app2 = new Vue({ el: '#app-2', data: { message: '页面加载于 ' + new Date().toLocaleString() } }) ``` 在控制台输入改变信息:app2.message = '新消息' #### 控制元素显示 v-if ```js

现在你看到我了

var app3 = new Vue({ el: '#app-3', data: { seen: true } }) ``` 直接在控制台改变属性:app3.seen = false #### 循环展示 v-for ```js
  1. {{ todo.text }}
var app4 = new Vue({ el: '#app-4', data: { todos: [ { text: '学习 JavaScript' }, { text: '学习 Vue' }, { text: '整个牛项目' } ] } }) ``` 在控制台改变内容:app4.todos.push({ text: '新项目' }) #### 添加一个事件监听器 v-on ```javascript

{{ message }}

var app5 = new Vue({ el: '#app-5', data: { message: 'Hello Vue.js!' }, methods: { reverseMessage: function () { this.message = this.message.split('').reverse().join('') } } }) ``` #### 表单输入和应用状态之间的双向绑定 v-model ```js

{{ message }}

var app6 = new Vue({ el: '#app-6', data: { message: 'Hello Vue!' } }) ``` #### 组件 - 任意类型的应用界面都可以抽象为一个组件树。 - 子单元通过 prop 接口与父单元进行了良好的解耦。 - 所有的 Vue 组件都是 Vue 实例。 ```js Vue.component('todo-item', { // todo-item 组件现在接受一个 // "prop",类似于一个自定义 attribute。 // 这个 prop 名为 todo。 props: ['todo'], template: '
  • {{ todo.text }}
  • ' })
    var app7 = new Vue({ el: '#app-7', data: { groceryList: [ { id: 0, text: '蔬菜' }, { id: 1, text: '奶酪' }, { id: 2, text: '随便其它什么人吃的东西' } ] } }) ``` #### 响应式 - 当一个 Vue 实例被创建时,它将 `data` 对象中的所有的 property 加入到 Vue 的**响应式系统**中。当这些 property 的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。 - 值得注意的是只有当实例被创建时就已经存在于 `data` 中的 property 才是**响应式**的。 - `Object.freeze()`,这会阻止修改现有的 property,也意味着响应系统无法再*追踪*变化。 ```js var obj = { foo: 'bar' } Object.freeze(obj) new Vue({ el: '#app', data: obj })

    {{ foo }}

    ``` - 除了数据 property,Vue 实例还暴露了一些有用的实例 property 与方法。它们都有前缀 `$`,以便与用户定义的 property 区分开来。 ```js 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 (newValue, oldValue) { // 这个回调将在 `vm.a` 改变后调用 }) ``` #### 生命周期钩子 - 生命周期钩子的 `this` 上下文指向调用它的 Vue 实例。 - 不要在选项 property 或回调上使用箭头函数 ```js new Vue({ data: { a: 1 }, created: function () { // `this` 指向 vm 实例 console.log('a is: ' + this.a) } }) // => "a is: 1" ``` ![](img\lifecycle.png)