使用App Maker收集用户生日并仅显示本月的生日。
我有一个数据模型persons
。在该模型中有两个数据源,默认的persons
和第二个birthdaysThisMonth
。 birthdaysThisMonth
中的数据源查询脚本正常运行,并且仅从persons
模型返回本月的生日。
但是,当我在persons
数据源中更改生日时,birthdaysThisMonth
数据源将保持不变,例如birthdaysThisMonth
中的查询脚本没有重新执行。
要更改生日,我从日期选择器中选择一个新日期,新值显示在表格中。我没有使用“提交”按钮,当日期选择器失去焦点时,我看到了更改。
此脚本在birthdaysThisMonth
数据源中作为查询脚本执行,该数据源未设置为Manual save mode
。它返回我想要的记录。
function setBirthdays() {
var calcRecords = [];
var personsRecords = app.models.persons.newQuery().run();
for (i=0; i<personsRecords.length; i++) {
var id = app.models.persons.newQuery().filters.Id._equals = i;
if (personsRecords[i].birthdate.getMonth() == thisMonth()) {
var calcRecord = app.models.persons.newRecord();
calcRecord.emailSecondary = personsRecords[i].emailSecondary;
calcRecord.birthdate = personsRecords[I].birthdate;
calcRecord.Id = personsRecords[i].Id;
calcRecords.push(calcRecord);
}
}
return calcRecords;
}
更新birthdaysThisMonth
中的数据后,如何重新执行persons
中的查询脚本。如何触发查询,以便它重新评估persons
中的数据并进行相应过滤。
使用事件和onAfterSave
似乎很有希望,但是我还没有找到一个例子。
我希望这项工作尽可能在服务器端进行。
答案 0 :(得分:0)
请参阅Markus Malessa的评论以获取答案。
不幸的是,您不能使用onAfterSave之类的服务器事件来触发在客户端上重新加载数据源,因此您提出的解决方案将无法工作。似乎唯一可行的解决方案是将您的人员数据源设置为手动保存数据源,在这种形式中,您可以更改出生日期,您将需要一个“保存”按钮,该按钮调用widget.datasource.saveChanges()并在该函数中合并一个回调,该回调将重新加载您的BirthdaysThisMonth数据源
我尝试推/拉数据的方式不好。看起来手动模式提供了我需要的功能类型。