组件属性不能直接传递对象吗
发布于 6 年前 作者 li95 3032 次浏览 来自 问答

组件属性值不能直接传递对象吗

比如:

<producttimer position="{{object}}" ></producttimer>

object是对象,里面包含数组等数据

properties: {

position:  null,

},

用这个this.data可以得到值,但是为什么this.data.position却获取不到值

10 回复
  1. 如果读不到数据,我推测是时机不对。组件使用者 setData 而来的数据,ready 的时机不保证在这个 setData 之后。

  2. getApp是可用的,但是这种全局调用容易有一点时序的问题:你不太容易控制各个组件和页面访问全局量的顺序,用的时候小心一点还是可以的。我的建议是,对于这个组件的不同实例间共享的量,直接写在组件文件内、Component()调用之前;对于需要在好几个js文件中共享的量,可以单独写在一个js文件中export出来,需要用的文件require它就好了;另外可以关注一下自定义组件的behaviors,常常可以解决一些这方面的问题。

属性值为空

空是指null还是undefined呢?

  • 那么你读到的 this.data.position 具体是什么呢?null还是undefined?

  • 传入的 object 数据具体是什么?

date对象展开是这样的,就是2这个地方取不到,1是直接取this.data可以看到这个date里面是有值的但是this.data.date却访问不到

你的意思是 “2” 的位置有问题?可以展开对象看看吗?(有时候不展开看不到里面有字段)

我还有个问题,这个组件里面能有什么办法获取到全局的变量吗?像其他js页面如:var app = getApp();或者能直接写到原型上面的

你好,我简单试了一下,并没有发现你提的问题。

这里需要注意:created 生命周期的时候 this.data 还没有被赋予属性值。

好的,谢谢,第一点已经改写另一种写法。

如图所示

object 数据如图就是Data值,我怀疑是不是数据太多有问题

回到顶部