Неперехваченная ошибка типа: this.template не является функцией Backbonejs

#ruby-on-rails #backbone.js #handlebars.js

#ruby-on-rails #backbone.js #handlebars.js

Вопрос:

Я работаю в Rails с BackboneJS в шаблонах руля.

Здесь я получаю странную ошибку.. это мой вид заголовка

 class App.Views.Header extends Backbone.View

  className: "navbar-inner"
  template: HandlebarsTemplates['app/templates/header']

  render: ->
    @$el.html(@template())
    @
  

основной файл приложения — это

 #= require_self
#= require_tree ./templates
#= require_tree ./views
#= require_tree ./routers

window.App =
  Routers: {}
  Views: {}
  Collections: {}
  Models: {}
  initialize: ->
    new App.Routers.MainRouter()
    Backbone.history.start()
  

и мой основной файл маршрутизатора таков

 class App.Routers.MainRouter extends Backbone.Router

  routes:
    "": "index"

  initialize: ->
    @headerView = new App.Views.Header()

  index: ->
    $("#header").html(@headerView.render().el)
  

когда я нажимаю localhost:3000 .. Я получил эту ошибку заранее.
Uncaught TypeError: this.template is not a function ..

Я полностью застрял в том, что любая помощь будет оценена по достоинству, спасибо

Ответ №1:

template: HandlebarsTemplates['header']

Путь к шаблону должен быть только самим шаблоном.

Может быть, это версия из-за предварительно скомпилированной версии или ресурсов

Ответ №2:

Похоже, что шаблон Handlebars HandlebarsTemplates['app/templates/header'] либо не существует, либо не был скомпилирован, либо, возможно, произошла ошибка при его компиляции. Это ошибка, которую вы получите, если это значение равно нулю или не определено.

Возможно, вы захотите попробовать установить точку останова в отладчике javascript вашего браузера при вызове to render , затем используйте отладчик, чтобы проверить значение this.template и посмотреть, что происходит.

Комментарии:

1. template: HandlebarsTemplates['header'] это сработало