Backbone.js TypeError:无法调用方法';在';未定义的

Backbone.js TypeError:无法调用方法';在';未定义的,backbone.js,Backbone.js,我正在努力学习Backbone.js。我试图在视图中定义模型更改事件,但遇到以下javascript错误: 未捕获的TypeError:无法调用未定义的 如果我从视图中取出initialize,它将显示文本而不会出错 我是否有正确的主干应用程序基本结构? 我做错了什么 $(document).ready(function rdy() { var Person = Backbone.Model.extend({ defaults: { name:

我正在努力学习Backbone.js。我试图在视图中定义模型更改事件,但遇到以下javascript错误: 未捕获的TypeError:无法调用未定义的

如果我从视图中取出initialize,它将显示文本而不会出错

我是否有正确的主干应用程序基本结构? 我做错了什么

$(document).ready(function rdy() 
{
    var Person = Backbone.Model.extend({
        defaults: {
            name:   'Alex',
            age:    33,
            }
        });

    person = new Person();

    var ContentView = Backbone.View.extend({
      el: '#content',
      initialize: function() {
        this.model.on('change', this.render, this);  //ERROR HERE <----------
        }, 
    render: function () {
        this.$el.html("Aargh Hello " + person.get('name'));
        return this;
        }
    });

  var NavigationRouter = Backbone.Router.extend({
    routes: {
        "": "defaultRoute"
            },
    initialize: function (options) {
        this.view = new ContentView({});          
        return this;
        },
    defaultRoute: function (actions) {
        this.view.render();
        }
  });
  var navigationRouter = new NavigationRouter;
  Backbone.history.start();
 });
$(文档).ready(函数rdy()
{
var Person=Backbone.Model.extend({
默认值:{
姓名:“Alex”,
年龄:33岁,
}
});
person=新的person();
var ContentView=Backbone.View.extend({
el:'内容',
初始化:函数(){

this.model.on('change',this.render,this);//此处出错您需要将模型传递到视图中。例如:

// Pass in the person you made earlier. Alternatively, you could use
// new Person() instead of creating the person separately
this.view = new ContentView({ model: person });
然后渲染函数也应该使用
this.model


您也可以在视图中进行检查,但是如果视图将依赖于存在
Person
模型,您可能应该让它这样失败,这样您就不会忘记了。

谢谢,您的建议很好,我更改了渲染函数。我尝试了:this.view=new ContentView({model:new Person()});作为替代方法。但这并没有对变化事件做出反应。