Google app maker 删除嵌套Appmaker列表项的多对多关系(而不是该项本身)

Google app maker 删除嵌套Appmaker列表项的多对多关系(而不是该项本身),google-app-maker,Google App Maker,我在云SQL中有3个表:person、tag、person\u tag 在Appmaker中,我有一个表单小部件(datasource:person)和一个列表小部件(datasources.person.relations.tag_id),显示绑定到datasource.item.name的文本。这非常有效,只显示指定给所选人员的标记 我在标记列表项上放置了一个删除按钮,以便可以从该人员的记录中删除标记。但是,我不知道如何设置onClick事件来删除关系(person_标记记录),而不是标记本

我在云SQL中有3个表:person、tag、person\u tag

在Appmaker中,我有一个表单小部件(datasource:person)和一个列表小部件(datasources.person.relations.tag_id),显示绑定到datasource.item.name的文本。这非常有效,只显示指定给所选人员的标记


我在标记列表项上放置了一个删除按钮,以便可以从该人员的记录中删除标记。但是,我不知道如何设置onClick事件来删除关系(person_标记记录),而不是标记本身(从标记表中)。创意?

App Maker将生成此代码删除当前项目

widget.datasource.deleteItem()

但正如问题中提到的,我们不需要删除该项,而是要打破两个记录之间的关系。为此,您可以修改项目数组,App Maker将智能地同步您的更改:

//这里的小部件是删除按钮和
//widget.parent将是列表的行(或网格的单元格,具体取决于UI)
//通过获取其在列表/网格中的位置
//我们将得到需要中断的数据源项(关系)的索引
var row=widget.parent;
var index=row.childIndex;
//删除索引中的一项,这将强制
//App Maker将打破这种关系
app.datasources.Person.item.Tags.splice(索引1);

您可以在

中找到此模式。我是这样做的:给定Person和Tags之间的多对多关系,从两个表中选择当前选中的项。在关系数组中找到第一项的索引,然后将其删除

var person = widget.root.descendants.Table1.datasource.item;
var tag = widget.root.descendants.Table2.datasource.item;

personIndex = person.Tags.indexOf(person);
if (personIndex !== -1) person.Tags.splice(personIndex, 1);