8.Vue.set的使用.html 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Vue.set的使用</title>
  8. <!-- 引入vue -->
  9. <script type="text/javascript" src="../js/vue.js"></script>
  10. </head>
  11. <body>
  12. <!-- 准备好一个容器 -->
  13. <div id="root">
  14. <h1>学校信息</h1>
  15. <h2>学校名称:{{school.name}}</h2>
  16. <h2>学校地址:{{school.address}}</h2>
  17. <h2>校长是:{{school.leader}}</h2>
  18. <hr/>
  19. <h1>学生信息</h1>
  20. <button @click="addSex">添加一个性别属性,默认值是男</button>
  21. <h2>姓名:{{student.name}}</h2>
  22. <h2 v-if="student.sex">性别:{{student.sex}}</h2>
  23. <h2>年龄:真实{{student.age.rAge}},对外{{student.age.rAge}}</h2>
  24. <h2>朋友们</h2>
  25. <ul>
  26. <li v-for="(f,index) in student.friends" :key="index">
  27. {{f.name}}--{{f.age}}
  28. </li>
  29. </ul>
  30. </div>
  31. </body>
  32. <script type="text/javascript">
  33. Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示
  34. const vm = new Vue({
  35. el: '#root',
  36. data: {
  37. school:{
  38. name:'尚硅谷',
  39. address:'北京',
  40. },
  41. student:{
  42. name:'tom',
  43. age:{
  44. rAge:40,
  45. sAge:29
  46. },
  47. friends:[
  48. {name:'jerry',age:35},
  49. {name:'tony',age:36}
  50. ]
  51. }
  52. },
  53. methods: {
  54. addSex(){
  55. // Vue.set(this.student,'sex','男')
  56. this.$set(this.student,'sex','男')
  57. }
  58. },
  59. })
  60. // Vue.set只能给data中的某一个对象追加属性,而不能给data追加属性
  61. // 也就是说,Vue.set()的第一个参数,不能是vm或vm下的data
  62. // Vue.set也能用于修改数组,格式为Vue.set(数组对象,要修改的索引,新值),但是一般不这么用
  63. </script>
  64. </html>