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