Pebble.js:将现有选项传递给webview

时间:2015-07-17 13:12:39

标签: pebble-watch pebble-js

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(而不是每次都计算),就会发生这种情况:

  1. 打开设置页面→webview获取数据。
  2. 进行一些更改并保存→应用获取新数据。
  3. 再次打开设置页面→webview获取陈旧数据。

1 个答案:

答案 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}' }, ...)