2

如果我这样做 - 一切都很好 -

var UserList = Backbone.View.extend({
        el: '.page',
        render: function(){

            var users = new Users();
            users.fetch({
                success: function() {
                    console.log('success');

                }
            })
                this.$el.html('test');

        }
    });

但是当我将 插入this.$el.html('test');到成功回调中时,我收到了一个错误:

TypeError:“未定义”不是对象(评估“this.$el.html”)

var UserList = Backbone.View.extend({
        el: '.page',
        render: function(){

            var users = new Users();
            users.fetch({
                success: function() {
                    console.log('success');
                    this.$el.html('test');
                }
            })
        }
    });

控制台日志正确触发。

4

1 回答 1

3

里面success的上下文已经改变,所以this不再指代视图对象(我相信它实际上指的是 JQuery Ajax 对象)。要解决此问题,您可以使用以下方法保存对视图的引用var self = this

var users = new Users();
var self = this;
users.fetch({
    success: function() {
        console.log('success');
        self.$el.html('test');
    }
})
于 2012-11-22T21:14:32.237 回答