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

发布于 7 年前作者 li953192 次浏览最后编辑 7 年前来自 ask

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

比如:

<producttimer position=“{{object}}” ></producttimer>

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

properties: {

position:  null,

},

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

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

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

chengping
chengping2 楼6 年前

属性值为空

空是指null还是undefined呢?

na03
na033 楼6 年前
  • 那么你读到的 this.data.position 具体是什么呢?null还是undefined?

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

yitao
yitao4 楼6 年前

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

yduan
yduan5 楼6 年前

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

gang94
gang946 楼6 年前

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

weimo
weimo7 楼6 年前

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

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

taoye
taoye8 楼6 年前

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

yaoli
yaoli9 楼6 年前

如图所示

chao80
chao8010 楼6 年前

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