Google Drive Realtime API - 添加协作地图

时间:2014-02-12 18:09:51

标签: javascript google-api google-drive-realtime-api

我的计划是创建一个协作地图的数据模型,其中包含包含自定义对象的协作列表。但是,我很难理解google api文档。目标是尝试创建一个事件管理工具,类似于此处演示的http://commondatastorage.googleapis.com/io-2013/presentations/708%20-%20Realtime%20API%20IO%202013.pdf

  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的新手。很感谢任何形式的帮助。谢谢,

1 个答案:

答案 0 :(得分:2)

要创建协作地图,请使用Model.createMap()。您正在initializeModel函数中正确执行此操作:

var map = model.createMap();

要将项目添加到协作地图,请使用CollaborativeMap.set。当您将创建的地图添加到根映射时,您也在使用initializeMap函数:

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

请注意,所有模型都以称为root的协作地图开头,您可以使用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);
    });