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:'undefined'はオブジェクトではありません('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 に答える