Вложенные объекты Handlebars

Я использую backbone.js с вложенными моделями. Идея состоит в том, чтобы содержать все атрибуты автора, а также повторно использовать модель автора как для постов, так и для комментариев. По крайней мере, теоретически это имеет смысл, я думаю.

Однако, настроив такие вещи, я столкнулся с путаницей, как получить разные значения с помощью Handlebars. Handlebars не любит передавать объекты из того, что я читал. Я могу легко получить статус в {{#each}} с помощью {{status}}, но, естественно, {{author.name}} не сработает.

Я рассматривал возможность использования помощника, однако, как вы можете видеть, у меня есть комментарии, вложенные внутрь, внутри которых будет вложен другой автор. Я не верю, что помощники внутри помощников будут работать.

Это образец объекта, извлеченный из консоли 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 добраться до каждого из значений?

Если есть более мощный движок шаблонов, я открываю варианты.


person Sir.Nathan Stassen    schedule 20.08.2013    source источник


Ответы (1)


Кажется, проблема в том, что вы помещаете модель Backbone прямо в свой шаблон, но сначала вам нужно преобразовать ее в объект JSON, используя model.toJSON(). Или вы пытаетесь получить доступ к 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!"
};
person Andreas Köberle    schedule 20.08.2013