当前位置: 首页 > news >正文

做网站还有用吗闸北集团网站建设

做网站还有用吗,闸北集团网站建设,公司手机网站模板免费下载,企业网站开发周期问题引入 Vue之所以能够监听Model状态的变化#xff0c;是因为JavaScript语言本身提供了Proxy或者Object.observe()机制来监听对象状态的变化。但是#xff0c;对于数组元素的赋值#xff0c;却没有办法直接监听。 因此#xff0c;如果我们直接对数组元素赋值 ul是因为JavaScript语言本身提供了Proxy或者Object.observe()机制来监听对象状态的变化。但是对于数组元素的赋值却没有办法直接监听。 因此如果我们直接对数组元素赋值 ulli v-for(item,index) in arrInfo{{item.name}}--{{item.age}}/li /ul data(){return {arrInfo:[{name:zuobaiquan,age:22},{name:zhangsan,age:20}]} }, // created(){ // this.arrInfo[0]{name:zuobaiquan01,age:22} // }, mounted(){this.arrInfo[0]{name:zuobaiquan02,age:22} } 在mounted阶段直接对数组元素 arrInfo 赋值会导致Vue无法更新View 说明在 created 视图未渲染时 直接对数组元素 arrInfo 赋值 data里面的初值会改变的。 此时在mounted阶段简单的做法是不要对数组元素赋值而是更新 mounted(){this.arrInfo[0]{name:zuobaiquan02,age:22}//正确做法//this.arrInfo[0].namezuobaiquan02//this.arrInfo[0].age23 } 另一种做法通过splice()方法删除某个元素后再添加一个元素达到“赋值”的效果 //正确做法二 通过splice()方法删除某个元素后再添加一个元素达到“赋值”的效果 var newArrItem{name:zuobaiquan02,age:24} this.arrInfo.splice(0, 1, newArrItem);  源码地址https://github.com/zuobaiquan/vue/blob/master/vueExercise/vue-test/src/views/vue-set/index01.vue 针对此问题 vue还提供了另外一种方法 set   https://cn.vuejs.org/v2/api/#vm-set 调用方法Vue.set( target, key, value ) target要更改的数据源(可以是对象或者数组) key要更改的具体数据 value 重新赋的值   此时 应该这样处理 //正确做法三 利用vue内置属性 set var newArrItem{name:zuobaiquan02,age:24} this.$set(this.arrInfo,0,newArrItem)     数组更新检测 变异方法 Vue 包含一组监听数组的变异方法所以它们也将会触发视图更新。这些方法有 push、pop、shift、unshift、splice、sort、reverse 替换数组 变异方法 (mutation method)顾名思义会改变被这些方法调用的原始数组。相比之下也有非变异 (non-mutating method) 方法例如filter(), concat() 和 slice() 。这些不会改变原始数组但总是返回一个新数组。当使用非变异方法时可以用新数组替换旧数组 example1.items example1.items.filter(function (item) {return item.message.match(/Foo/) }) 你可能认为这将导致 vue 丢弃现有 DOM 并重新渲染整个列表。幸运的是事实并非如此。Vue 为了使得 DOM 元素得到最大范围的重用而实现了一些智能的、启发式的方法所以用一个含有相同元素的数组去替换原来的数组是非常高效的操作。 整理变异方法push、pop、shift、unshift、splice、sort、reverse 非变异方法filter、 concat、 slice 总结 由于 JavaScript 的限制Vue 不能检测以下变动的数组 第一类问题当你利用索引直接设置一个项时例如vm.items[indexOfItem] newValue 第二类问题当你修改数组的长度时例如vm.items.length newLength   为了解决第一类问题以下两种方式都可以实现和 vm.items[indexOfItem] newValue 相同的效果同时也将触发状态更新 // Vue.set Vue.set(example1.items, indexOfItem, newValue) 或者 // Array.prototype.splice example1.items.splice(indexOfItem, 1, newValue)   为了解决第二类问题你可以使用 splice example1.items.splice(newLength) 对象更改检测注意事项 还是由于 JavaScript 的限制Vue 不能检测对象属性的添加或删除 var vm new Vue({data: {a: 1} }) // vm.a 现在是响应式的vm.b 2 // vm.b 不是响应式的 对于已经创建的实例Vue 不能动态添加根级别的响应式属性。但是可以使用 Vue.set(object, key, value) 方法向嵌套对象添加响应式属性。例如对于 var vm new Vue({data: {userProfile: {name: Anika}} }) 你可以添加一个新的 age 属性到嵌套的 userProfile 对象 Vue.set(vm.userProfile, age, 27) 你还可以使用 vm.$set 实例方法它只是全局 Vue.set 的别名 this.$set(this.userProfile, age, 27) 有时你可能需要为已有对象赋予多个新属性比如使用 Object.assign() 或 _.extend()。在这种情况下你应该用两个对象的属性创建一个新的对象。所以如果你想添加新的响应式属性不要像这样 Object.assign(this.userProfile, {age: 27,favoriteColor: Vue Green }) 你应该这样做 this.userProfile Object.assign({}, this.userProfile, {age: 27,favoriteColor: Vue Green })  参考原文https://www.cnblogs.com/thinkingthigh/p/7789108.html转载于:https://www.cnblogs.com/zuobaiquan01/p/9034516.html
http://www.zqtcl.cn/news/962576/

相关文章:

  • 行远金华网站建设公司合肥公司做网站
  • 餐厅类网站模板中国电建市政建设集团有限公司网站
  • 格力网站建设首页六盘水遵义网站建设怎么做
  • 建设工程企业资质工作网站创建网站怎么赚钱的
  • 三水网站建设流感吃什么药最好
  • 洛阳市住房和城乡建设局网站怎么查询企业注册信息
  • 商业摄影网站源码wordpress文章作者
  • 昆明企业网站模板建站漳浦建设局网站更新
  • 企业网站建设策划书微信开发者工具是干嘛的
  • 泵 品牌网站建设WordPress头像不能本地化
  • vue快速建站网站开发法律
  • 家居行业网站开发百度竞价推广账户
  • 粉色大气妇科医院网站源码百度网址大全网址
  • wordpress 留言墙插件优化网站搭建
  • 优秀设计师网站芯片设计公司
  • 铜陵网站建设公司wordpress密码访问插件
  • 一个公司做2个产品网站怎么做的wordpress网站怎么百度的到
  • 邓州做网站做网站seo怎么赚钱
  • 微信小程序开发步骤图长沙百度seo
  • 网站代做仿百度图片网页设计
  • 广州建设局网站首页网络营销专业的就业方向
  • wordpress单页seo关键词优化培训
  • 网站301多久短信营销平台
  • 江苏省现代化实训基地建设网站网站备案加速
  • 中国的网站域名云服务器发布网站
  • 免费seo网站自动推广软件做的好微信商城网站
  • 杭州网站建设方案优化腾讯网络游戏大全列表
  • 泰安网站建设收费标准直播视频app
  • 网站路径问题优秀的网站有哪些
  • 建设网站使用的工具大连免费网站制作