Базовые переменные шаблона работают, только если я использую это в шаблоне

В моем шаблоне я должен поместить this.name и this.gravatar для доступа к атрибутам данных моей модели пользователя. Если я не получаю, я получаю сообщение об ошибке, когда шаблон пытается визуализировать. Все работает, но я не вижу примеров, где они это помещают. в шаблонах.

Мой Магистральный Вид:

Class MyApp.Views.Header extends Backbone.View
  template: JST['header']

  initialize: =>
    @model.on("change reset add", @render)

  render: =>
    @$el.html(@template (@model.attributes) )
    this

Шаблон моего заголовка:

<span id= "headerRight">
  <span>
    <a href="/classroom/help">Help</a>
  </span>
  <span> <img id="headerGravatar" src="<%= this.gravatar %>"></span>
  <span> <%= this.name %> </span>
  <span>
    <a class="logout" href='/signout'>Sign Out</a>
  </span>
</span>

Как я создаю свое мнение:

headerView = new UCBCloudClassroom.Views.Header( model: @user)
    $('#header').html(headerView.render().el)

1 ответ

Решение

Backbone требует подчеркивания, поэтому большинство примеров, которые вы видите, будут использовать шаблоны подчеркивания, которые имеют синтаксис <% = property%>.

Эко-шаблоны используют синтаксис <% = @property%> для отображения ссылки на атрибуты модели:

Поскольку <% = @property%> эквивалентно <% = this.property%>, все работает так, как задумано.

Другие вопросы по тегам