把手在同一行中引用两个单独的对象

时间:2015-11-16 19:10:58

标签: javascript handlebars.js

我有一个名为Locations的查找对象:

{
  'CA:' 'California',
  'NV': 'Nevada',
  'FL': 'Florida',
  ...
}

和一组地址:

[
  {street:'123 place', state:'FL', ...}
]

是否可以在手柄模板标签中引用查找的输出?

这样的事情是我尝试过的事情

{{#each addresses}}
  {{Lookup[this.state]}}
{{/each}}

但是我收到了一个错误。所以我可能错误地引用了Lookup。

1 个答案:

答案 0 :(得分:1)

lookup助手除了是小写(不是“Lookup”)外,还有两个以空格分隔的参数。第一个参数是要进行查找的对象(或数组)的路径,第二个参数是要使用的键。所以在你的情况下你可能想要{{lookup ../locations this.state}}。这是一个片段:

var source =
  '{{#each addresses}}' +
    '<li>{{lookup ../locations this.state}}</li>' +
  '{{/each}}';

var template = Handlebars.compile(source);

var data = {
  locations: {
    'CA': 'California',
    'NV': 'Nevada',
    'FL': 'Florida',
    // ...
  },
  addresses: [
    { street: '123 Place', state: 'FL' },
    { street: '456 Other', state: 'NV' },
    { street: '789 Last', state: 'CA' },
    // ...
  ]
};

document.getElementById('list').innerHTML = template(data);
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.4/handlebars.js"></script>
<ul id="list"/>