所以我希望有一个协作列表对象,我可以在其中存储其他列表,例如:
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')
无法工作。
答案 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设计高效且正确的数据模型的方法。