数据state.role的值时能取到的,但是整个显示模块就是不能正常使用。
去掉v-if的话一切就都正常了
<span class="el-dropdown-link">
<el-avatar :size="32" >
<img v-if="state.role==2 " src="../assets/img/shengchan.png"/>
<img v-if="state.role==1 " src="../assets/img/cangku.png"/>
</el-avatar>
<el-icon class="el-icon--right">
<i-ep-arrow-down/>
</el-icon>
</span>
当我们在父辈组件请求后台接口完成后要刷新子孙组件时,我们就可以在父辈组件调用以下函数,实现子孙组件的刷新(感觉这种方法怪怪的,个人喜欢第二种方法)
上代码:
//父组件内容
<child v-if="show"></child>
js:
refresh(){
this.show = false;
this.$nextTick(() => {
this.show = true;
});
}
补充:使用v-if来有条件的渲染组件,还可以避免父组件异步传值失败的问题。比如我们要在父组件请求后台数据,并且要将数据在子组件渲染,这时就可以用v-if,有数据时才渲染子组件,就不会出错了。
你应该是用v-if 和 v-else -if
项目是vue2.0+的吗?如果是vue2.0,对于object的属性更新值,可能存在数据更新,但是页面未渲染的情况;可以考虑使用以下方法更新值
this.$set(object, key, data); // object:目标对象。key:需要添加的属性名。data:属性值。
不能正常使用,控制台有报错吗?