Javascript Pebble SDK/SimplyJS不使用\t字符
在将数据推送到我的手表时(使用SimplyJS),我正在尝试让我的Pebble手表尊重转义序列字符Javascript Pebble SDK/SimplyJS不使用\t字符,javascript,pebble-watch,pebble-sdk,Javascript,Pebble Watch,Pebble Sdk,在将数据推送到我的手表时(使用SimplyJS),我正在尝试让我的Pebble手表尊重转义序列字符\t,这是一段有趣的时光 以下代码段是我一直在使用的代码: simply.scrollable(true); simply.style('small'); simply.fullscreen(true); var aflLadderUrl = 'http://www.sportal.com.au/feeds/sss/afl_ladder.json'; var ladderContent = ''
\t
,这是一段有趣的时光
以下代码段是我一直在使用的代码:
simply.scrollable(true);
simply.style('small');
simply.fullscreen(true);
var aflLadderUrl = 'http://www.sportal.com.au/feeds/sss/afl_ladder.json';
var ladderContent = '';
ajax({ url: aflLadderUrl, type: 'json'},
function(data) {
var i = 0;
while (i < 18){
ladderContent = ladderContent + data.ladder[i].friendly_name + '\t\t\t' + data.ladder[i].percentage + '\n';
i++;
}
simply.text({
title: 'AFL Ladder',
body: ladderContent
});
},
function() {
simply.text({
title: 'AFL Ladder',
body: 'No internet connection'
});
}
);
简单。可滚动(true);
简单。风格(“小”);
简单。全屏(真);
var afladderURL=http://www.sportal.com.au/feeds/sss/afl_ladder.json';
var ladderContent=“”;
ajax({url:afladderURL,类型:'json'},
功能(数据){
var i=0;
而(i<18){
ladderContent=ladderContent+data.ladder[i]。友好的_名称+'\t\t\t'+data.ladder[i]。百分比+'\n';
i++;
}
简单的.text({
标题:“AFL阶梯”,
正文:梯形内容
});
},
函数(){
简单的.text({
标题:“AFL阶梯”,
正文:“没有互联网连接”
});
}
);
我目前所观察到的是,\n
正在受到尊重,我可以看到在我的手表上,每一行数据都显示在单独的一行上。但是,我的\t
似乎被忽略了,并且没有在我的行中插入选项卡,而是显示零空格(即'我的名字是'+'\t\t\t'+'戴夫'
显示为我的名字是
)
我还尝试过使用Pebble SDK编译Hello World程序(从第11行打印的字符串中提取代码并添加两个\t\t
),并且注意到SDK只接受\n
字符,而不接受\t
字符(就像我的SimplyJS应用程序那样)
我的问题是:有没有可能让Pebble(通过SDK或SimplyJS)显示选项卡的方式与您希望它们在打印到控制台时的工作方式相同?我知道\t字符可能不受支持,我可以使用空格代替\t
,但这一个让我好奇
如果您需要更多信息,请告诉我
提前谢谢 因为
\t
是一个控件(不可打印)字符,所以它与任何字形都不对应,如果有,也不会得到一致的“显示”。例如,终端模拟器对它的解释将不同于读取TSV文件的电子表格软件。听起来像是Pebble固件将bytestring转换为显示器上像素的部分忽略了\t
,尽管我在SDK文档中找不到这一点
如果使用固定宽度字体,可以使用空格实现自己的选项卡,如下所示:
var data = {ladder: [
{friendly_name: "Cool Team", percentage: 80.0},
{friendly_name: "Really Cool Team", percentage: 80.0},
{friendly_name: "The Coolest Team of All", percentage: 80.0}
]}
var len = function(obj) {return obj.friendly_name.length}
var longer = function(a, b) {return len(a) > len(b) ? a : b}
var longestName = len(data.ladder.reduce(longer))
var tab = function(obj) { return new Array(longestName - len(obj) + 2).join(" ") }
var print = function(obj) { return obj.friendly_name + tab(obj) + obj.percentage }
var ladderContent = data.ladder.map(print).join("\n")
// Cool Team 80
// Really Cool Team 80
// The Coolest Team of All 80
谢谢,伙计,这是我收到的最好的解释。有趣的是,有些字体似乎也不显示换行符,但您的答案似乎非常可靠。