Javascript backbone.js绑定的问题
我是主干网新手,试图通过绑定获得模型更新来更新我的html,但运气不好。我正在使用jquery.window插件创建弹出窗口。检查我按下更改标题按钮并更新我的模型标题,html不会得到更新。非常感谢您的帮助,谢谢 埃里克 这是我的密码 HTML:Javascript backbone.js绑定的问题,javascript,binding,backbone.js,Javascript,Binding,Backbone.js,我是主干网新手,试图通过绑定获得模型更新来更新我的html,但运气不好。我正在使用jquery.window插件创建弹出窗口。检查我按下更改标题按钮并更新我的模型标题,html不会得到更新。非常感谢您的帮助,谢谢 埃里克 这是我的密码 HTML: 您忘记为WindowView模型的更改:title绑定添加方法 Backbone.js文档介绍了关于-函数(又名bind)上的: on(事件,回调,[context])别名:bind 将回调函数绑定到对象。无论何时触发事件,都将调用回调 所以使用thi
您忘记为
WindowView
模型的更改:title
绑定添加方法
Backbone.js文档介绍了关于-函数(又名bind)上的:
on(事件,回调,[context])别名:bind
将回调函数绑定到对象。无论何时触发事件,都将调用回调
所以使用this.model.bind(“change:title”)
您刚刚提供了每次属性title
更改时触发的事件。您尚未提供回调函数,因此在触发事件时不会发生任何事情。我假定您希望回调是WindowView
的渲染函数,因此这应该可以解决它:
this.model.on("change:title", this.render); // changed to on as bind is deprecated but still supported
这样,每当触发事件change:title
,就会调用与模型对应的WindowView
的render
。This.model.bind(“change:title”)代码>这里忘了什么?怎么样this.model.bind(“change:title”,this.render)代码>?太棒了,成功了,谢谢!!!我会对此作出回答
(function($) {
AppWindow = Backbone.Model.extend({
title : "John",
window : null
});
AppWindows = Backbone.Collection.extend({
initialize : function(models, options) {
this.bind("add", options.view.addWindowView);
}
});
WindowView = Backbone.View.extend({
initialize : function(){
_.bindAll(this, "render");
this.model.bind("change:title");
this.template = _.template($("#search_template").html());
this.render().el;
},
render : function(){
var formString = this.template(this.model.toJSON());
var win = $.window({
icon : 'http://www.fstoke.me/favicon.ico',
title : this.model.get("title"),
content : formString,
x : 80,
y : 80,
resizable : true,
});
this.el = $("#" + win.getWindowId()+".window_frame");
this.delegateEvents(this.events);
return this;
}
});
AppView = Backbone.View.extend({
views: {},
el : $("body"),
initialize : function() {
this.appWindows = new AppWindows(null, {
view : this
});
},
events : {
"click #add-window" : "addWindow",
"click #change-title" : "changeTitle"
},
addWindow : function() {
var window_title = "Eric";
var window_model = new AppWindow({
title : window_title
});
// Add a new model to our friend collection
this.appWindows.add(window_model);
},
changeTitle : function(){
var win = this.appWindows.at(0);
win.set("title", "jamjamajm");
},
addWindowView : function(model) {
var view = new WindowView({
model : model
});
model.set("window", view);
},
deleteWindow : function(wnd){
console.log("deleteing");
}
});
var appview = new AppView;
})(jQuery);
this.model.on("change:title", this.render); // changed to on as bind is deprecated but still supported