Javascript 如何在submitHandler回调中访问主干视图?

Javascript 如何在submitHandler回调中访问主干视图?,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我正在探索backbone.js,并尝试设置简单的登录页面。这是我的view.js文件: window.LoginView = Backbone.View.extend({ events: { }, initialize : function() { this.model.bind("error", this.error); this.template = _.template(tpl.get('lo

我正在探索backbone.js,并尝试设置简单的登录页面。这是我的view.js文件:

window.LoginView = Backbone.View.extend({   

    events: {

    },

    initialize : function() {       
        this.model.bind("error", this.error);       
        this.template = _.template(tpl.get('login'));       
    },  

    login: function(form){
        this.model.set({
            login: $("#login", form).val(),
            password: $("#password", form).val()
        });         
    },  

    render : function(eventName) {      
        $(this.el).html(this.template());   
        $(this.el).find("form").validate({
            submitHandler: this.login
        });
        return this;
    }
});
如您所见,我使用
jquery.validation
附加到
render
函数中的表单。作为submitHandler回调,我设置了
login
函数。这条线

this.model.set({...

给我的是
此。模型未定义
错误,因此我假设登录函数中的
初始化
渲染
函数中的
不同。我的问题是如何在登录功能中访问主干
这个

一种方法是使用jQuery.proxy()为登录函数设置“this”的值:

$(this.el).find("form").validate({
  submitHandler: $.proxy(this.login, this)
});

代理返回一个新函数,其中包含“this”的新值。由于render函数中的“this”指向您的视图,因此可以将其作为第二个参数传递给proxy。

谢谢;)我想到了一些东西,使用tmp变量分配给主干
这个
,但您的解决方案要优雅得多:)我认为现在更倾向于使用bind代理,但这很有帮助-谢谢!是的,如果你不需要担心旧浏览器:this.login.bind(this)