未捕获的TypeError:this.template不是函数Backbonejs

时间:2016-10-09 11:22:59

标签: ruby-on-rails backbone.js handlebars.js

我在Rails中使用BackbowJS处理车把模板。

我在这里得到一个奇怪的错误.. 这是我的标题视图

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 ..

我完全被困在任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

package com.esqmo.apps.effetmatrix; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; import android.graphics.Paint; import android.media.effect.Effect; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity implements View.OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Button boutton_vert = (Button) findViewById(R.id.b_v); final Button boutton_bleu = (Button) findViewById(R.id.b_b); final Button boutton_rouge = (Button) findViewById(R.id.b_r); final Button boutton_rose = (Button) findViewById(R.id.b_ro); boutton_bleu.setOnClickListener(this); boutton_vert.setOnClickListener(this); boutton_rouge.setOnClickListener(this); boutton_rose.setOnClickListener(this); } @Override public void onClick(View v) { } public void passerVert(View v) { } public void passerRouge(View v) { } public void passerRose(View v) { } public void passerBleu(View v) { } }

模板路径应该只是模板本身。

可能是版本或资产预编译的版本

答案 1 :(得分:0)

听起来HandlebarsTemplates['app/templates/header']中的Handlebars模板不存在,尚未编译,或者在编译时可能出错。如果该值为null或未定义,那就是你得到的错误。

您可能希望在调用render时尝试在浏览器的javascript调试器中设置断点,然后使用调试器检查this.template的值,看看发生了什么。