Google drive api ValuesAdded/ValuesRemoved的ObjectChanged事件未冒泡

Google drive api ValuesAdded/ValuesRemoved的ObjectChanged事件未冒泡,google-drive-api,google-drive-realtime-api,Google Drive Api,Google Drive Realtime Api,我正试图减少与协作模型关联的事件侦听器的数量。为了做到这一点,我开始侦听ObjectChanged事件,而不是特定的事件类型,并将其委托给其他处理程序。但是,对于CollaborativeList上的ValuesAdded/ValuesRemoved更改,ObjectChanged事件似乎没有正确冒泡 function onObjectChanged(e) { log('Changed: ', e); } // Placeholder, called when we load our

我正试图减少与协作模型关联的事件侦听器的数量。为了做到这一点,我开始侦听ObjectChanged事件,而不是特定的事件类型,并将其委托给其他处理程序。但是,对于CollaborativeList上的ValuesAdded/ValuesRemoved更改,ObjectChanged事件似乎没有正确冒泡

function onObjectChanged(e)
{
    log('Changed: ', e);
}

// Placeholder, called when we load our doc through the realtime api. 
function onDocLoaded(doc)
{
    var docModel = doc.getModel();
    var docRoot = docModel.getRoot();

    console.log('Drive document loaded: ', window.performance.now());

    if (docRoot.has('testMap'))
    {
        docRoot.delete('testMap');
    }

    docRoot.set('testMap', docModel.createMap());

    var testMap = docRoot.get('testMap');
    console.assert(testMap, 'Test map required');

    docRoot.addEventListener(gapi.drive.realtime.EventType.OBJECT_CHANGED, onObjectChanged);

    var testList = docModel.createList();
    testMap.set('testList', testList);
    console.assert(testList, 'Test list required');

    setTimeout(function ()
    {
        console.log('Begin Push');
        testList.push('This is a test string');
        console.log('End Push');
    }, 1000);
}
上面的代码在doc load上运行,并演示了问题。在本例中,我希望触发两个ObjectChanged事件(第一个用于在映射上设置的列表,第二个用于将字符串推入列表)。第一个事件正确激发,但是列表推送不会在“docRoot”或“testMap”上触发ObjectChanged事件。因为它们都是testList的祖先,所以应该向它们冒泡一个事件(基于)

然而,ObjectChanged事件是在testList上触发的,因此看起来只有冒泡部分存在问题


是否有办法确保事件发生冒泡?此外,对于冒泡的事件,是否有方法中途停止冒泡?

我没有解决方案,但我可以确认我观察到了相同的问题。关于停止冒泡,参考文档似乎表明ObjectChangedEvent最终派生自定义StopperPagation的goog.events.Event。然而,我只是尝试了一下,它给了我一个“没有方法”的错误。这可能需要一个单独的问题。