收藏
回答

data中的对象属性无法使用自身的get,set钩子方法怎么办?

是这样的,我自定义了一个构造方法,构造方法里面我定义了一个普通属性value,然后定义了一个displayObject并设置了get钩子方法,主要是根据自己的另外一个属性动态的返回一些东西。

function ListItem(value) {
  this.value = value;
}
 
ListItem.prototype = {
  get displayObject() {
    return {
      title: "Title",
      type: this.value < 0? "D" : "C",
      value: this.value
    }
  }
}

然后我new了一个ListItem对象,并放到Page的data里面,但是页面不识别displayObject,只能识别value属性,似乎他只能识别自身可枚举属性

data: {
    listItem: new ListItem(100)
},
<text>{{listItem.value}}</text>
<text>{{listItem.displayObject}}</text><!-- 不能识别 -->

有什么其他折中的方法能实现这种效果?我的意思是:其中某个属性需要依赖另外几个属性的值。

回答关注问题邀请回答
收藏

2 个回答

  • DESTINY 〆
    DESTINY 〆
    2019-08-08

    是这样的:我们公司打算把一个现有的web app移植到小程序,原版app里面有很多定义好的model,各种model都是有继承的关系的,如果转到小程序,data不识别原型链的话,那我们就麻烦了,原来的model全都不能复用,整个都得重构

    2019-08-08
    有用
    回复
  • 卢霄霄
    卢霄霄
    2019-08-07

    你想实现 computed 的效果是吗?

    2019-08-07
    有用
    回复 14
    • DESTINY 〆
      DESTINY 〆
      2019-08-07
      差不多的思想,但是我这个不需要监听的功能,只是在获取的时候触发
      2019-08-07
      回复
    • 卢霄霄
      卢霄霄
      2019-08-07回复DESTINY 〆
      如果是最初的一次的话 用defineProperty定义就能拿到。。但是对象改了,this.data其实把整个对象拷贝过了
      2019-08-07
      回复
    • 卢霄霄
      卢霄霄
      2019-08-07回复DESTINY 〆
      function ListItem(value) {
        this.value = value;
        Object.defineProperty(this,'name',{
          enumerable:true,
          get(){
            return this.value+"abc"
          },
        })
      }


      2019-08-07
      回复
    • DESTINY 〆
      DESTINY 〆
      2019-08-08回复卢霄霄
      把整个对象拷贝过去,意思是忽略原型链?
      2019-08-08
      回复
    • DESTINY 〆
      DESTINY 〆
      2019-08-08回复卢霄霄
      我刚才试了,defineProperty也不能识别
      2019-08-08
      回复
    查看更多(9)
登录 后发表内容
问题标签