使用 created 钩子函数替代。在 dom 加载之前就进行处理。
使用 mounted 钩子函数替代。其实相当于 1.0 的 ready
使用新的 mounted 钩子函数替代。应该注意的是,使用 mounted 并不能保证钩子函数中的 this.$el 在 document 中。为此还应该引入 Vue.nextTick/vm.$nextTick。
mounted: function () {
this.$nextTick(function () {
// 代码保证 this.$el 在 document 中
})
}
当包含 index 时,之前遍历数组时的参数顺序是 (index, value)。现在是 (value, index) ,来和 JavaScript 的原生数组方法(例如 forEach 和 map)保持一致。
当包含 key 时,之前遍历对象的参数顺序是 (key, value)。现在是 (value, key),来和常见的对象迭代器(例如 lodash)保持一致。
之前,v-for="number in 10" 的 number 从 0 开始到 9 结束,现在从 1 开始,到 10 结束。
Props 现在只能单项传递。为了对父组件产生反向影响,子组件需要显式地传递一个事件而不是依赖于隐式地双向绑定
Props 现在只能单向传递。为了对父组件产生反向影响,子组件需要显式地传递一个事件而不是依赖于隐式地双向绑定。
在 2.0 中使用 v-bind 时,只有 null, undefined , 和 false 被看作是假。这意味着,0 和空字符串将被作为真值渲染。比如 v-bind:draggable="''" 将被渲染为 draggable="true"
现在在组件上使用 v-on 只会监听自定义事件(组件用 $emit 触发的事件)。如果要监听根元素的原生事件,可以使用 .native 修饰符
<my-component v-on:click.native="doSomething"></my-component>
lazy 和 number 参数现在以修饰符的形式使用,以前是
<input v-model="name" lazy>
<input v-model="age" type="number" number>
现在是
<input v-model.lazy="name">
<input v-model.number="age" type="number">
v-model 不再以内联 value 方式初始化的初值了,显然他将以实例的 data 相应的属性作为真正的初值。这意味着以下元素:
<input v-model="text" value="foo">
在 data 选项中有下面写法的:
data: {
text: 'bar'
}
将渲染 model 为 ‘bar’ 而不是 ‘foo’
简单起见, v-el 和 v-ref 合并为一个 ref 属性了,可以在组件实例中通过 $refs 来调用。这意味着 v-el:my-element 将写成这样: ref="myElement", v-ref:my-component 变成了这样: ref="myComponent"。绑定在一般元素上时,ref 指 DOM 元素,绑定在组件上时,ref 为一组件实例。 因为 v-ref 不再是一个指令了而是一个特殊的属性,它也可以被动态定义了。这样在和 v-for 结合的时候是很有用的:
<p v-for="item in items" v-bind:ref="'item' + item.id"></p>
Vue 的过渡系统有了彻底的改变,现在通过使用 和 (在 v-for 中使用)来包裹元素实现过渡效果,而不再使用 transition 属性
<div id="list-demo" class="demo">
<button v-on:click="add">Add</button>
<button v-on:click="remove">Remove</button>
<transition-group name="list" tag="p">
<span v-for="item in items" v-bind:key="item" class="list-item">
{{ item }}
</span>
</transition-group>
</div>
<p v-for="user in filteredUsers">{{ user.name }}</p>
==>
computed: {
filteredUsers: function () {
var self = this
return self.users.filter(function (user) {
return user.name.indexOf(self.searchQuery) !== -1
})
}
}
现在过滤器参数形式可以更好地与 js 函数调用方式一致,因此不用再用空格分隔参数:
<p>{{ date | formatDate 'YY-MM-DD' timeZone }}</p>
现在用圆括号括起来并用逗号分隔:
<p>{{ date | formatDate('YY-MM-DD', timeZone) }}</p>
keep-alive 不再是一个特殊属性而是一个包裹组件,类似于 比如:
<keep-alive>
<component v-bind:is="view"></component>
</keep-alive>
<transition>
<keep-alive>
<component v-bind:is="view"></component>
</keep-alive>
</transition>
通过 vm.$watch创建的观察器现在将在组件渲染时被激活。这样可以让你在组件渲染前更新状态,不用做不必要的更新。比如可以通过观察组件的prop变化来更新组件本身的值。 如果以前通过 vm.$watch 在组件更新后与 DOM 交互,现在就可以通过 updated 生命周期钩子来做这些。