【问题标题】:How to set @key inside a partial template? (Or why is it impossible?)如何在部分模板中设置@key? (或者为什么不可能?)
【发布时间】:2014-02-20 22:07:30
【问题描述】:

我有一个部分模板,代表表格中的一行,也可以直接从 Javascript 中使用(参见下面的背景)。以下是我如何将其用作部分:

{{#each this}}
{{> my_onerow}}
{{/each}}

这是一个简化的my_onerow

<div>{{@key}}: {{x}}, {{y}}</div>

我将这些模板作为JST.myJST.my_onerow 提供,所以我的JavaScript 看起来像:

var obj={
  one:{x:"this",y:"that"},
  two:{x:55,y:77},
  three:{x:"hello",y:"world"}
  };
$('body').append(JST.my(obj));

@key 在部分可用,所以我明白了:

<div>one: this, that</div>
<div>two: 55, 77</div>
<div>three: hello, world</div>

然后,当我想直接从 JavaScript 添加另一行时,我会这样做:

var newObj = {x:"new",y:"entry"};
$('body').append(JST.my_onerow(newObj));

这也可以,但是@key"",我不知道如何定义它。这不起作用:

var newObj = {"@key":"four",x:"new",y:"entry"};

我的问题是:直接使用JST.my_onerow 模板时如何定义@key?或者,如果不可能,任何人都可以深入了解 Handlebars 的内部结构,以解释为什么它不是可以轻松添加的东西吗?

(我正在使用车把 1.3.0。)


背景:我将其创建为普通模板,编译成JST,然后我通过这一行将所有模板作为部分可用:

Handlebars.partials = JST;

这个位工作正常。我只是顺便提一下。

【问题讨论】:

    标签: handlebars.js


    【解决方案1】:

    (使用我目前使用的 hack-ish 解决方法进行自我回答,以防万一我真正想做的事情是不可能的。)

    我目前做的是预处理数据,将对象键添加到值部分内,作为key 成员。这是在使用 JST.my 之前完成的:

    for(key in obj)obj.key = key;
    $('body').append(JST.my(obj));
    

    然后我把my_onerow改成这样:

    <div>{{key}}: {{x}}, {{y}}</div>
    

    当然,当直接从 JavaScript 添加行时,我可以很容易地指定 key

    【讨论】:

      猜你喜欢
      • 2012-01-10
      • 2016-03-07
      • 2011-07-03
      • 2021-07-17
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      相关资源
      最近更新 更多