docs解释了如何获取webview的数据 ,而不是如何将数据传递到中。
现在,我设置了一个虚拟变量,并在open
回调中返回正确的网址:
function onSettingsOpen(e) {
var options = Settings.option();
return URL_ROOT + '/settings?options=' + encodeURIComponent(JSON.stringify(options));
}
Settings.config(
{ url: 'DUMMY' },
onSettingsOpen,
onSettingsUpdated
);
(我通过反复试验发现了这一点。文档中没有提到它。)
如果我将网址直接传递给Settings.config
(而不是每次都计算),就会发生这种情况:
答案 0 :(得分:1)
设置将选项传递给webview的方式与预期传递回pebble.js的方式相同;也就是说,在散列'#'符号之后作为URI编码的JSON对象添加后缀。在配置页面中,您将使用
JSON.parse(decodeURIComponent(window.location.hash.substr(1)))
获取选项。您可以通过在配置页面中将window.location显示为调试输出来查看。假设你有类似jQuery的东西:
$('.some-element').text(window.location)
如果您的配置页面由动态服务器提供,则它将不会收到选项,因为URL的哈希部分未发送到服务器。因此,要将选项传递给服务器,必须构造URL。虽然这似乎是一个巨大的限制,但它是以这种方式选择的,因为它不强制某种查询格式。示例格式是单个查询参数中的所有设置或分散多个查询参数的选项。
话虽如此,也许我可以接受模板URL来自动化第二大用例,这是单个查询参数中的所有设置。像
这样的东西// Non-functioning feature request
Settings.config({ url: 'http://server/settings?options=${options}' }, ...)