2012-11-22 62 views
2

如果我做到這一點 - 每一件事情的偉大工程 -Backbone.js的瀏覽渲染錯誤

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' is not an object (evaluating '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'); 
       } 
      }) 
     } 
    }); 

控制檯日誌被正確觸發。

回答

3

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

您是高手,感謝您的解釋。 – shannoga