Hogan.js - 引用具有特定索引的项目

时间:2013-11-20 18:07:54

标签: javascript mustache hogan.js

我希望只有一个数组中的特定项目的部分。例如:

var items = ['first','second']

例如:

{{#items[1]}}
   Slightly different styling for the second item, for no difference other than it's the second item.
{{/items[1]}}

我试过了:

{{#items.1}}
  Slightly different styling for the second item, for no difference other than it's the second item.
{{/items.1}}

以及:

{{#items}}
  {{#0}}
     Slightly different styling for the second item, for no difference other than it's the second item.
  {{/0}}
{{/items}}

但这些都不起作用。

真的不想制作像这样的对象:

{'1':'first','2':'second'}

因为那只是讨厌。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在我给你一些建议/解决方法之前 就像你说的那样,它只是一些愚蠢的造型,因此与渲染或数据无关。如果它具有这种意义上的含义,您应该将其添加到数据中,以便更好地表示ts结构。

Mustache是​​一种无逻辑的模板语言,如果你觉得你需要Mustache语言,你应该尽可能地保持逻辑,否则只需使用Handlebars

CSS

你可以用css  为了那个原因; altho not in IE<9 请注意过滤器中缺少“n”

.selector:nth-child(2) {
    some: styling;
}

更改数据

其次,您可以在将数据传递给Hogan之前更改数据 要么作为控制器中数据处理的一部分,要么作为js框架有时称之为视图控制器, 将它改成对象就像你说不是最好的方法,你可以把它变成一个数组的数组

[ [1,'first'], [2, 'second'] ]

车把

如果你不需要Hogan,Handlebars的当前指数为{{@index}}

功能

作为更改输入数据的替代方法,您可以创建一个辅助函数来为您处理该逻辑,但同样这不是真正的逻辑,它只是视觉。而胡子是一种无逻辑的模板语言,所以在开始使用这些

时要小心
var items = ['first','second'];
var data = {items:items};

data.second= (function () {
    var i=0;
    return function () {
        return i++ === 1; //index 1 being the second item in an array
    }
}());

然后使用第二个帮助

{{#items}}
    {{#second}}
    Slightly different styling for the second item, for no difference other than it's the second item.
    {{/second}}
{{/items}}