Backbone.js backbonejs model.toJSON和render
我有一些模型,我想在更改时将render方法绑定到它。我试图将model.toJSON传递给渲染器,但它不起作用。不过,如果我在render中传递模型并应用到JSON,它就会工作 整个代码如下: 上面的代码不起作用。如果我改变Backbone.js backbonejs model.toJSON和render,backbone.js,model,underscore.js,bind,render,Backbone.js,Model,Underscore.js,Bind,Render,我有一些模型,我想在更改时将render方法绑定到它。我试图将model.toJSON传递给渲染器,但它不起作用。不过,如果我在render中传递模型并应用到JSON,它就会工作 整个代码如下: 上面的代码不起作用。如果我改变 this.model.bind('change', _.bind(this.render, this, this.model.toJSON())); 到 及 到 但为什么 更合适的方法是在视图上使用listenTo函数,例如: this.listenTothis.mod
this.model.bind('change', _.bind(this.render, this, this.model.toJSON()));
到
及
到
但为什么 更合适的方法是在视图上使用listenTo函数,例如:
this.listenTothis.model、change、this.render 我认为它没有像你期望的那样工作是因为当你这样做的时候
this.model.bind('change', _.bind(this.render, this, this.model.toJSON()));
传递给render方法的this.model.toJSON参数将始终是调用u.bind时模型的初始状态
当您执行content=this.model.toJSON时;在render方法中,可以获得当前状态,包括触发render的预期更改
您可以这样更好地构建视图:
defaultView=Backbone.View.extend{
标记名:“节”,
类名:“默认值”,
初始化:函数选项{
这个。呈现;
this.model.on'change',u.bindthis.render,this;
},
模板:\ u.template$'tmpl-default'.html,
活动:{
“模糊[名称=默认输入]”:“eventHandler”
},
渲染:函数{
this.$el.htmlthis.templatethis.model.toJSON;
$'content'.htmlthis.$el;
归还这个;
},
eventHandler:functionevent{
var val=$event.currentTarget.val;
this.model.set'content',val;
}
};
此外,查看listenTo而不是像@Jayem建议的那样避免意外的内存泄漏问题想知道答案是否有帮助。。。?
this.model.bind('change', _.bind(this.render, this, this.model));
if (!content) {
content = this.model.toJSON();
}
if (!content) {
content = this.model.toJSON();
}else{
content = content.toJSON();
}
this.model.bind('change', _.bind(this.render, this, this.model.toJSON()));