Google实时API - 访问协作列表中的数组

时间:2016-02-15 18:01:30

标签: google-drive-realtime-api

所以我希望有一个协作列表对象,我可以在其中存储其他列表,例如:

var tasks = model.createList();
tasks.pushAll([['Do', 'Buy', 'go'], ['1', '23', '44', '21']]);

我的问题是:如何访问这些元素?通常,像tasks [i] [j]这样的东西会起作用,但在实时api的情况下却没有。当然我可以使用.asArray()方法,但是当我想在列表对象中的特定数组中添加内容时,它对我毫无用处。

编辑:好的,所以你可以使用它来获取它们:Tasks.get(i)[j]但是如何在特定数组中添加新元素? tasks.get(i).push('something')无法工作。

2 个答案:

答案 0 :(得分:1)

var dumbList = tasks.get(i).slice();

会为您提供您放在那里的普通(非协作)数组的副本。您可以更改它,然后在协作阵列中设置值,以将新版本放入文档中。

dumbList.push('new item');
tasks.set(i, dumbList);

将触发tasks上的ValuesChangedEvent。

答案 1 :(得分:0)

由于model.createList()会返回CollaborativeList类,get方法应该可以解决问题(如您所示)。 push仍然可以工作,因为它会在列表末尾添加一个项目。除了推送之外,您可以使用的另一种方法是insert,但您必须指定它将添加到哪个索引。

另外,请查看Data Modeling Guidelines,因为它包含了使用Realtime API设计高效且正确的数据模型的方法。