Событие API Google реального времени OBJECT_CHANGED, вызванное (почти) чем-либо?

Возьмите пользовательский объект реального времени «MyObject», одним из свойств которого является IndexReference, ссылающийся на CollaborativeList «MyList». «MyObject» также имеет совместное свойство поля «MyProps», в которое я помещаю строку json.

Чтобы обнаружить изменения в «MyProps», я попробовал следующее:

MyObject.addEventListener(gapi.drive.realtime.EventType.OBJECT_CHANGED, dealWithChanges);

Однако, когда я вношу какие-либо изменения в объект в «MyList», что никак не должно влиять на IndexReference, событие OBJECT_CHANGED запускается для «MyObject».

Это по дизайну? Это делает событие OBJECT_CHANGED бесполезным, фактически событием «что-то где-то изменилось», но без него невозможно обнаружить изменение в «MyProps».


person HeyHeyJC    schedule 04.08.2015    source источник


Ответы (1)


События изменения объекта всплывают, поэтому вы можете слушать выше по дереву все, что происходит ниже.

Чтобы прослушивать только изменения в совместных полях в конкретном пользовательском объекте, вам нужен ValueChangedEvent

person Cheryl Simon    schedule 04.08.2015
comment
Мне все еще интересно, какова цель OBJECT_CHANGED. Является ли это своего рода побочным эффектом, и мы можем также поднять это, поскольку все события в любом случае происходят здесь? - person HeyHeyJC; 05.08.2015
comment
ObjectChanged может быть полезен в различных сценариях, когда вы хотите предпринимать более общие действия в ответ на какие-либо изменения, а не иметь конкретную логику для каждого изменения. Скажем, у вас есть список объектов совместной работы. Некоторые фреймворки пользовательского интерфейса позволяют просто перерисовать все, если что-то изменится, вместо того, чтобы обновлять конкретный элемент. Таким образом, вы добавляете ObjectChangedListener в список, выясняете, изменилось ли что-либо в списке, и просто говорите, что перерисовываете все. - person Cheryl Simon; 05.08.2015
comment
Спасибо за это, имеет смысл. - person HeyHeyJC; 05.08.2015