【问题标题】:Backbone.js view render errorBackbone.js 视图渲染错误
【发布时间】:2012-11-22 21:12:08
【问题描述】:

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

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');
                }
            })
        }
    });

控制台日志被正确触发。

【问题讨论】:

    标签: javascript backbone.js viewrendering


    【解决方案1】:

    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');
        }
    })
    

    【讨论】:

      猜你喜欢
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多