我在Cloud SQL中有3个表:person,tag,person_tag
在Appmaker中,我有一个表单窗口小部件(datasource:person)和一个列表窗口小部件(datasources.person.relations.tag_id),显示绑定到datasource.item.name的文本。这很有效,只显示分配给所选人员的标签。
我在标签列表项上放了一个删除按钮,这样我就可以从该人的记录中删除标签。但是,我无法弄清楚如何设置onClick事件来删除关系(person_tag记录)而不是标记本身(来自标记表)。想法?
答案 0 :(得分:1)
App Maker会将此代码生成为删除当前项:
widget.datasource.deleteItem();
但正如问题中提到的那样,我们不需要删除该项,而是打破两个记录之间的关系。为此,您可以修改项目数组,App Maker将智能地同步您的更改:
// Here widget is delete button and
// widget.parent will be list's row (or grid's cell depending on the UI)
// and by getting its position in the list/grid
// we will get index of datasource's item (relation) we need to break
var row = widget.parent;
var index = row.childIndex;
// remove one item at index, this will force
// App Maker to break the relation
app.datasources.Person.item.Tags.splice(index, 1);
中找到此模式
答案 1 :(得分:0)
我是这样做的:给定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);