6

Ember 的 v1.0.0-rc.3 文档Ember.Array说:

您可以使用此模块中定义的方法以 KVO 友好的方式访问和修改数组内容。如果 [原文如此] 通过将属性的语法更改为.observes('*myProperty.[]')来更改数组,您还可以在成员资格时收到通知。

我试图想出一个最小的例子来观察数组的变化,但不能让观察者着火。工作样本是什么样的?

PS 注意这个问题

4

1 回答 1

9

哦,嘿,这是我的答案!

有几种方法可以观察Em.A()属性。你有.observes('a.[]'),.observes('a.@each').observes('a.length'). 这个概念和 Ember 中的任何属性都是一样的,你只需要直接操作数组并且观察者应该触发。显然,使用该set方法不适用于(Ember)数组,所以也许这就是你出错的地方?

我已经修改了我的旧jsfiddle以考虑一个可观察的数组(我也将所有内容都更新到了最新版本)。

我认为重要的是要记住 Ember 数组实际上并不是一个数组 - 它是一个具有一些自定义函数和属性的对象,这些函数和属性实现了您通常的数组 javascript 函数。所以你不能做这样的事情:Em.A() = [1,2,3],因为类型Em.A是一个对象,而不是一个数组。

另一个有用的注意事项是 ArrayControllers 有一个 Ember 数组的内容,这意味着您必须观察内容的数组,而不是内容本身(即不观察arraycontroller.content,而是观察arraycontroller.content.[])。

这就是为什么您必须观察 Ember 数组上看起来怪异的prop.[]属性的原因,因为 Ember 数组的值不是您所期望的。

于 2013-04-29T14:04:59.947 回答