Handlebars嵌套对象

5
我正在使用backbone.js和嵌套模型。这种做法的想法是自包含作者的所有属性,并在帖子和评论中重复使用作者模型。至少在理论上,我认为这是有道理的。
然而,设置像这样的东西后,我遇到了一个困惑,即如何使用Handlebars检索不同的值。据我所读,Handlebars不喜欢传递对象。我可以轻松地在{{#each}}中检索状态,用{{status}},但当然不能用{{author.name}}
我已经考虑过使用Helper,但正如您所看到的,我有嵌套的评论,里面还有另一个嵌套的作者。我不认为助手内部的助手会起作用。 这是从Chrome控制台中提取的示例对象。
Object {items: Array[2]}
    +items: Array[2]
        +0: Object
            +author: child
                _changing: false
                _pending: false
                _previousAttributes: Object
                +attributes: Object
                    name: "Amy Pond"
                    profileImage: "Amy.jpg"
                    __proto__: Object
                changed: Object
                cid: "c0"
                __proto__: Surrogate
            comments: child
            id: "50f5f5d4014e045f000001"
            status: "1- This is a sample message."
            __proto__: Object
        +1: Object
            author: child
            comments: child
            id: "50f5f5d4014e045f000002"
            status: "2- This is another sample message."
            __proto__: Object
            length: 2
            __proto__: Array[0]
            __proto__: Object

我的组织方式是否有误,或者处理多维数据的更好方法?是否有一种让Handlebars获得每个值的好方法?

如果有更强大的模板引擎,我会考虑使用它。

1个回答

6
似乎问题在于您直接将Backbone模型放入模板中,但是您必须先使用model.toJSON()将其转换为JSON对象。或者您尝试访问author.attributes.name
根据文档
Handlebars还支持嵌套路径,因此可以查找当前上下文下面的嵌套属性。
<div class="entry">
  <h1>{{title}}</h1>
  <h2>By {{author.name}}</h2>

  <div class="body">
    {{body}}
  </div>
</div>

那个模板适用于这个上下文。
var context = {
  title: "My First Blog Post!",
  author: {
    id: 47,
    name: "Yehuda Katz"
  },
  body: "My first post. Wheeeee!"
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接