2014-02-12 55 views
0

我的計劃是創建一個數據模型,該協作地圖包含協作列表,其中包含自定義對象。不過,我正在努力理解谷歌API文檔。隨着試圖創建一個事件管理工具的目標,類似於一個展示在這裏http://commondatastorage.googleapis.com/io-2013/presentations/708%20-%20Realtime%20API%20IO%202013.pdfGoogle Drive Realtime API - 添加協作地圖

function initializeModel(model) { 
    var map = model.createMap(); 
     model.getRoot().set('map', map); 
    } 

    function onFileLoaded(doc) { 
    var map = doc.getModel().getRoot().get('map'); 
    map(gapi.drive.realtime.EventType.VALUE_CHANGED, "some function which will update the project"); 

我認爲這將創建地圖,但是,我不知道如何訪問它添加自定義列表中的不同地圖分支,然後依次自定義對象。我對Google Realtime API非常陌生。很感謝任何形式的幫助。謝謝,

回答

2

要創建協作地圖,請使用Model.createMap()。你是這樣做正確你initializeModel功能:

var map = model.createMap(); 

要將項目添加到一個協作地圖,使用CollaborativeMap.set。您還做您的initializeMap功能,當您添加您創建到根地圖的地圖:

model.getRoot().set('map', map); 

需要注意的是所有車型開始與協作地圖稱爲根,您可以用Model.getRoot()訪問。因此,您的initializeModel功能後,你的文檔模型看起來像

{map: {}} 

所以,你已經成功地創建一個協作的地圖,你可以添加協作名單。在你onFileLoaded功能,您獲取到地圖這一行的引用:

var map = doc.getModel().getRoot().get('map'); 

到一個列表添加到地圖中,您將創建一個列表:

var list = doc.getModel().createList(); 

然後將列表添加到地圖:

map.set('mylist', list); 

現在你的文檔模型是這樣的:

{map: {mylist: []}} 

我不確定你最後一行的意圖是什麼。 var map是一個對象,不可調用。通常在添加事件處理程序時引用事件類型。例如,如果要在地圖上更改值時運行某個函數,則可以這樣做:

map.addEventListener(gapi.drive.realtime.EventType.VALUE_CHANGED, 
    function(e) { 
     console.log('key ' + e.property + ' changed from value ' + e.oldValue + ' to value ' + e.newValue); 
    });