设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

2019前端面试题汇总(主要为Vue)(2)

发布时间:2019-02-21 20:11 所属栏目:21 来源:前端小酱
导读:比如现在需要监控data中,obj.a 的变化。Vue中监控对象属性的变化你可以这样: watch:{ obj:{ handler(newValue,oldValue){ console.log('objchanged') }, deep:true } } deep属性表示深层遍历,但是这么写会监控ob

比如现在需要监控data中,obj.a 的变化。Vue中监控对象属性的变化你可以这样:

  1. watch: {  
  2.       obj: {  
  3.       handler (newValue, oldValue) {  
  4.         console.log('obj changed')  
  5.       },  
  6.       deep: true  
  7.     }  
  8.   } 

deep属性表示深层遍历,但是这么写会监控obj的所有属性变化,并不是我们想要的效果,所以做点修改:

  1. watch: {  
  2.    'obj.a': {  
  3.       handler (newName, oldName) {  
  4.         console.log('obj.a changed')  
  5.       }  
  6.    }  
  7.   } 

还有一种方法,可以通过computed 来实现,只需要:

  1. computed: {  
  2.     a1 () {  
  3.       return this.obj.a  
  4.     }  

利用计算属性的特性来实现,当依赖改变时,便会重新计算一个新值。

7. Vue中给data中的对象属性添加一个新的属性时会发生什么,如何解决?

示例:

  1. <template>  
  2.   <div>  
  3.     <ul>  
  4.       <li v-for="value in obj" :key="value">  
  5.         {{value}}  
  6.       </li>  
  7.     </ul>  
  8.     <button @click="addObjB">添加obj.b</button>  
  9.   </div>  
  10. </template>  
  11. <script>  
  12. export default {  
  13.   data () {  
  14.     return {  
  15.       obj: {  
  16.         a: 'obj.a'  
  17.       }  
  18.     }  
  19.   },  
  20.   methods: {  
  21.     addObjB () {  
  22.       this.obj.b = 'obj.b'  
  23.       console.log(this.obj)  
  24.     }  
  25.   }  
  26. }  
  27. </script>  
  28. <style></style> 

点击button会发现,obj.b 已经成功添加,但是视图并未刷新:

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读