sproutcore - наблюдение за свойствами элементов массива - PullRequest
1 голос
/ 29 ноября 2011

У меня есть модель со свойством x, я держу контроллер массива с моделями.Мне нужно вычислить что-то, связанное с каждым из x в моем массиве, поэтому каждое изменение элементов массива или свойства x в каждом элементе должно запускать вычисления.

Как сделать это вычисляемое свойство?

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

Если вам нужно пересчитать объекты в массиве при изменении свойства любого элемента в массиве, у вас есть несколько вариантов.

1) Используйте RangeObserver. Обратите внимание, что вам придется обновить индексы, которые наблюдает наблюдатель, если вы сделаете это. Проверьте источник, включая тесты, чтобы увидеть, как его использовать.

2) Прокрутите свое, т.е. добавьте наблюдателя к каждому элементу в массиве вручную. То же самое относится и к этому подходу.

3) Вычисленные свойства хороши, но этот случай чрезвычайно сложен. Возможно, вы захотите запустить событие из вашего пользовательского интерфейса (если это возможно, может не иметь смысла для вашей настройки) и просто выполнить пересчет вручную.

1 голос
/ 29 ноября 2011

Вы пытались указать свое свойство таким образом?

newProperty: function() {
    // body goes here
}.property('[]').cacheable()

Спецификация '[]' отслеживает содержимое массива.

...