我有一个AppMaker应用程序,它基于一个地址表/数据源。我可以使用next / prev按钮获得一个表单,但是用一个名为的下拉列表替换了键字段(名称)(用户可以开始键入名称以跳转到那里,显示下拉列表)。
我希望当用户从下拉列表中选择时,整个表单会更新,而下一个/上一个按钮也会正常工作(有太多记录可以通过next / prev进行分页) 。如果它太复杂了,我不必拥有next / prev功能。
目前下拉列表正在运行,但我无法获取下一个/上一个按钮设置的索引或表单的其余部分以反映所选的下拉记录。
我试图将“onValueEdit”事件设置为这样......
var selected = widget.value;
var idx = widget.options.indexOf(selected);
console.log("Selected: "+selected+", index = "+idx+"\n");
if(idx < 0) { //...this error is never hit
console.log("Index error - setting to zero!\n");
idx = 0;
}
widget.datasource.loadPage(idx); //...update form?
通过控制台记录进行两次观察:
“idx”var永远不会可靠地设置为选定的下拉列表,而且是 经常“0”(没有错误消息显示),所以“indexOf()”函数 没有按预期工作。
“已选择”的var(名称)始终是正确的。
如果我使用固定值(例如5)调用widget.datasource.loadPage(...),它对表单中显示的内容(之前加载的数据仍然存在)没有影响 - 显然不是这样做的方式:v /
你能指导 noob 正确的方向吗?
答案 0 :(得分:1)
如果您使用默认的App Maker表单,那么您可以看到所谓的pager
,实际上并没有分页。它触发prevItem / nextItem数据源方法,换句话说,它导航数据源项而不是页面。以下是App Maker文档的引用:
nextItem:选择下一个项目。对于Query Datasources,如果当前项目是页面上的最后一项,则会加载下一页并选择新加载页面上的第一项。
因此,如果您已经加载了所有项目(将数据源的query page size
设置为0),那么您只需更改数据源中的选定项目:
// onValueEdit dropdown event
// assuming, that form and dropdown share same datasource
widget.datasource.selectKey(newValue._key);
如果你真的有很多物品,并且在一次通话中加载所有物品是不可行的......那么这将是另一个故事......
答案 1 :(得分:0)
我删除了此页面并重新启动,并使用下拉列表替换了默认的商家名称数据字段,我将下拉列表设置为:
Options: @datasources.Addresses.items
Value: @datasources.Addresses.item
工作正常吗?!不确定我的原始页面发生了什么!
<强>更新强> 因此,您似乎需要删除值和选项,然后重新输入这些。当你这样做时,OK会亮起。
另外,我对App Maker的最初看法是构建UI并附加数据。那是我的第一个错误。您构建数据,然后让App Maker构建编辑/添加页面。
答案 2 :(得分:0)