javascript - 复杂对象的计算属性无法绑定
怪我咯
怪我咯 2017-04-11 09:43:57
[JavaScript讨论组]

使用 Vue 的版本是2.1.0,发现对于计算属性上如果是复杂对象,无法正常观察到的问题.虽然也可以用 watch 方式来解决.但是就比较麻烦了.想问一下大家有没有遇到这个问题

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script class="jquery library" src="//cdn.bootcss.com/vue/2.1.0/vue.min.js" type="text/javascript"></script>
    <title>RunJS 演示代码</title>
  </head>
<body>
    <p id="example">
  <p>Original message: "{{ message.test }}"</p>
  <p>Computed reversed message: "{{ message.kkkk }}"</p>
</p>
  </body>
</html>
var vm = new Vue({
  el: '#example',
  data: {
    message: {
            test:'asdas',
            kkkk:'123123'
        }
  },
  computed: {
    'message.kkkk' : function () {
      return this.message.test.split('').reverse().join('')
    }
  }
})

示例 Demo:http://runjs.cn/code/vpcdas8z

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
PHPz

定义的计算属性是绑定在vm实例上的新属性,相当于你的vm下有一个message.kkkk属性,跟上面定义的message是同级的,你可以在chrome的console下打印下vm,看下vm的属性是不是有两个属性,一个message下面有test和kkkk,另外一个是message.kkkk

当你定义计算属性的时候,vue会知道这个属性的依赖,computed下的message.kkkk定义的函数,相当于这个属性的getter,所以

message: {
   test:'asdas',
   kkkk:'123123'
}  

computed: {
    'message.kkkk' : function () {
      return this.message.test.split('').reverse().join('')
    }
  }

两个根本就不是一个属性

大家讲道理

名字起错了啊,你的message.kkkk'123123',你的vm上都有这个了,添加计算属性是无效的啊!!!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号