Javascript backbone.js绑定的问题

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

我是主干网新手,试图通过绑定获得模型更新来更新我的html,但运气不好。我正在使用jquery.window插件创建弹出窗口。检查我按下更改标题按钮并更新我的模型标题,html不会得到更新。非常感谢您的帮助,谢谢

埃里克

这是我的密码

HTML:


您忘记为
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