var App = Vue.extend({ root });
router.start(App,'#app');这里首先将根组件注册进来,用于将路由中配置好的各个页面渲染出来,然后将根组件挂载到与#app匹配的元素上。
八、实现多个根据不同条件显示不同文字的方法
v-if,
v-else可以实现条件选择,但是如果是多个连续的条件选择,则需要用到计算属性computed。例如实现当输入框中什么都没写的时候显示字符串‘empty’,否则显示输入框中的内容,代码如下:
<div id="test">
<input type="text" v-model="inputValue">
<h1>{{changeVaule}}</h1>
</div>
new Vue({
el:'#test',
data:{
changeVaule:'123'
},
computed :{
changeVaule:function(){
if(this.inputValue!==''){
return this.inputValue;
}else{
return 'empty';
}
}
}
});九、Vuejs在变化检测问题
1.检测数组
由于javascript的限制,vuejs不能检测到下面数组的变化:
直接索引设置元素,如
vm.item[0]={};修改数据的长度,如
vm.item.length。为了解决问题1,Vuejs扩展了观察数组,为它添加一个
$set()方法:
// 与 `example1.items[0] = ...` 相同,但是能触发视图更新
example1.items.$set(0, { childMsg: 'Changed!'})问题2,需要一个空数组替换items。
除了
$set() ,vuejs也为观察数组添加了
$remove()方法,用于从目标数组中查找并删除元素,在内部调用了
splice() 。因此,不必:
var index = this.items.indexOf(item)
if (index !== -1) {
this.items.splice(index, 1)
}只需:
this.items.$remove(item);2.检测对象
受ES5的显示,Vuejs不能检测到对象属性的添加或删除。因为Vuejs在初始化时候将属性转化为
getter/setter,所以属性必须在data对象才能让Vuejs转换它,才能让它是响应的,例如:
var data = { a: 1 }
var vm = new Vue({
data: data
})
// `vm.a` 和 `data.a` 现在是响应的vm.b = 2
// `vm.b` 不是响应的
data.b = 2
// `data.b` 不是响应的










