超全面的vue.js使用总结

2020-06-14 06:13:34易采站长站整理


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` 不是响应的