2014-04-14 52 views
0

我將我工作的Backbone.js應用程序拆分爲模型,視圖和路由器的單獨文件。使用RequireJS分離Backbone.js對象後,Model.fetch()回調不起作用

在我的路由器中,我創建了一個Model,執行其.fetch(),期望達到回調函數。然而,這從來沒有發生過。

return Backbone.Router.extend({ 
    self : this, 

    initialize: function(){ 
     require(['models/mymodel'], 
      function(MyModel) { 
       var myModel = new MyModel(); 
       myModel.fetch({ success: self.callback, error: self.callback }); 
       console.log(myModel.get('myAttr')); 
       //prints 'undefined', although can be seen in model.attributes 
      } 
     ); 
    }, 

    callback: function(){ 
     console.log('Callback reached!); //is never printed 
    } 
}); 

型號/ mymodel.js:

define(function (require) { 
    "use strict"; 
    var $   = require('jquery'), 
     Backbone = require('backbone'); 

    return Backbone.Model.extend({ 
     url: function(){ 
      return '/apicall'; 
     } 
    }); 
}); 

回答

0

在代碼中的一個主要問題是該位:

self : this, 

self場將在對象創建文本而不是到一個你想要做什麼明智的價值。 (你將如何得到這個值?)在你的initialize函數的開始。從代碼中刪除以上行,並在initialize開頭設置self應該給你想要的東西:

initialize: function(){ 
    var self = this; 
    // The rest is identical.