array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 vue.js中使用set方法 this.$set - 爱码网

vue教程中有这样一个注意事项:

vue.js中使用set方法 this.$set

第一种具体情况如下:

vue.js中使用set方法 this.$set 

运行结果:

vue.js中使用set方法 this.$set

当利用索引改变数组某一项时,页面不会刷新。解决方法如下:

vue.js中使用set方法 this.$set

运行结果:

vue.js中使用set方法 this.$set

三种方式都可以解决,使用Vue.set、vm.$set()或者数组的splice方法。

 

在做项目的过程中,有个发现,先上代码:

vue.js中使用set方法 this.$set

第一个数组通过利用下标改变第二项,第二个数组使用$set()方法改变第二项,根据上面的代码,我们会知道:第一个数组的第二项改变不会在页面更新,只有第二个数组的更改会在页面更新。然而结果却是:

vue.js中使用set方法 this.$set

两个数组的的改变都在页面更新了。。

也就是说,$set()方法调用时,页面会全部更新一遍。

 

 

 

 

 

[javascript] view plain copy
 
 
 
 vue.js中使用set方法 this.$setvue.js中使用set方法 this.$set
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3.   
  4. <head>  
  5.     <meta charset="UTF-8">  
  6.     <title>Document</title>  
  7.     <script src="vue.js"></script>  
  8.     <style>  
  9.     .blue {  
  10.         color: blue;  
  11.     }  
  12.     </style>  
  13. </head>  
  14.   
  15. <body>  
  16.     <div id="example-1">  
  17.         <ul>  
  18.             <template v-for="item in items">  
  19.                 <li>  
  20.                     {{$index}}.{{ item.msg }}  
  21.   
  22.                     <button v-on:click="f5(item)">vm.items.splice(index, 1)</button>  
  23.   
  24.                     <button v-on:click="f6(item)">vm.remove</button>  
  25.                 </li>  
  26.             </template>  
  27.         </ul>  
  28.   
  29.           
  30.         <ul>  
  31.             <li>  
  32.                 <button v-on:click="f1">vm.items[0] = {} 失效</button>  
  33.             </li>  
  34.             <li>  
  35.                 <button v-on:click="f2">vm.items.$set(0, { childMsg: 'Changed!'}) </button>  
  36.             </li>  
  37.             <li>  
  38.                 <button v-on:click="f3">vm.items.length = 0 失效</button>  
  39.             </li>  
  40.             <li>  
  41.                 <button v-on:click="f4">vm.items={}</button>  
  42.             </li>  
  43.         </ul>  
  44.         <div class="blue">  
  45.             {{$data | json }}  
  46.         </div>  
  47.         <pre>  
  48.         因为 JavaScript 的限制,Vue.js 不能检测到下面数组变化:  
  49.         直接用索引设置元素,如 vm.items[0] = {};  
  50.         修改数据的长度,如 vm.items.length = 0。  
  51.         </pre>  
  52.     </div>  
  53.     <script>  
  54.     var vm = new Vue({  
  55.         el: '#example-1',  
  56.         data: {  
  57.             items: [{  
  58.                 msg: 'Foo'  
  59.             }, {  
  60.                 msg: 'Bar'  
  61.             }, {  
  62.                 msg: 'George'  
  63.             }]  
  64.         },  
  65.         methods: {  
  66.             f1: function() {  
  67.                 vm.items[0] = {}; // 失效  
  68.             },  
  69.             f2: function() {  
  70.                 vm.items.$set(0, {  
  71.                     childMsg: 'Changed!'  
  72.                 })  
  73.                   
  74.                  vm.items.$set(2, {  
  75.                     msg: 'dongtao!'  
  76.                 })  
  77.             },  
  78.             f3: function() {  
  79.                 vm.items.length = 0; // 失效  
  80.             },  
  81.             f4: function() {  
  82.                 vm.items = {}  
  83.             },  
  84.             f5: function(item) {  
  85.                 var index = this.items.indexOf(item) //Search an array for the item  
  86.                 if (index !== -1) {  
  87.                     this.items.splice(index, 1) //Selects a part of an array, and returns the new array  
  88.                 }  
  89.             },  
  90.             f6: function(item) {  
  91.                 this.items.$remove(item)  
  92.             }  
  93.         }  
  94.   
  95.     })  
  96.     </script>  
  97. </body>  
  98.   
  99. </html>  

 

相关文章: