【问题标题】:Understanding {{.0}} {{.1}} in stache templates了解 stache 模板中的 {{.0}} {{.1}}
【发布时间】:2014-11-14 10:00:24
【问题描述】:

我正在做一个带有 stache(mustache 的一个版本,模板系统)的项目,我遇到了

<a href="{{.0}}" data-set="{{.1}}"></a>

如果我猜的话,我会说这些数字是数组中的索引?但我不确定,我在文档中找不到对它们的引用...

你知道它们是什么吗?

帮助不胜感激...

詹姆斯

【问题讨论】:

  • 看看输出和视图数据,然后确定发生了什么?
  • 嗨 Cerberus,我做到了。它显然会输出 href 和属性等。我是该项目的新手,而且它是单片的且编码错误,所以我试图弄清楚数据来自哪里以及如何解释它。我只是不知道那个语法是什么意思,我希望有人能指出我正确的方向...... {{.}} 输出一个对象,可能是你所在的上下文,但 {{.0}} 输出当我模拟它时什么都没有......
  • 您必须从周围的标签中找出上下文,即{{#person}}{{.0}}{{/person}} 应该是对 person[0] 的引用或为每个 i 迭代 person[i][0]。 (我认为这可能取决于人是真正的数组还是对象/参数?带有编号的索引。)
  • @lossleader 是的,我同意。麻烦的是,这是部分文件中唯一的父母不那么明显的行 - 所以上下文是一个问题。我也无法让该语法单独工作:var james = ["james", 36] 或 james = {name: "james", age: 36} 或 james = {1: "james", 2 : 36};或 james = [{name: "james"}, {age: 36}];当模板为

    {{.0}}

    {{.1}}

    can.view.render(template, james) 跨度>
  • @user1775718 答案是在您所处的上下文中标记为 0 的属性。但这并不能告诉您上下文是 {0:blah} 还是 [blah]。

标签: javascript templates mustache


【解决方案1】:

很可能是这样的:

https://github.com/mustache/spec/issues/52

这是对 Mustache 规范的扩展,它允许将标签名称锚定到当前上下文,基本上将 {{.}} 标签与点表示法结合起来。

【讨论】:

  • 是的,对于任何有这个问题的人来说,{{.1}} 实际上是针对具有名为 1 的属性的对象。令人难以置信的是那里有这么糟糕的程序员......
  • 它实际上是在引用数组的第一个元素吗?许多 mustache 实现(例如 javascript、php)都允许这样做。
  • 相关人员将一组选项卡存储为一个数组,其中每个选项卡都是一个数组。如上所述为每个选项卡属性手动输入值,然后使用 _.at() 按索引选择选项卡。所以它看起来像 [ ['#', '', '/en/blah', true] [...] ]。并且每个数组都被解析为模板 {{.0}} 返回哈希,{{.2}} '/en/blah' 等。工作,但不是很可读,可维护 - 相当容易出错且不面向对象.
  • 是的,这真的很难看。此外,这是一个完美的例子,说明有人没有做好准备他们的视图模型:)
猜你喜欢
  • 2017-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多