2013-04-12 23 views
1

我正在使用RequireJS來處理所有依賴關係。嘗試使用我的集合時獲取「undefined不是函數」

因此,這裏是我的觀點:

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'bootstrap', 
    'collections/InstitutionsCollection' 
], function($, _, Backbone, InstitutionsCollection){ 

    var InstitutionsView = Backbone.View.extend({ 
     render: function() { 
      var institutions = new InstitutionsCollection(); 

      institutions.fetch({ 
       success: function() { 
        console.log("success!"); 
       } 
      }); 
     } 
    }); 

    return InstitutionsView; 
}); 

的錯誤是在這條線拋出: var institutions = new InstitutionsCollection();

這裏是我的收藏:

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'models/InstitutionModel' 
], function($, _, Backbone, InstitutionModel){ 

    var InstitutionsCollection = Backbone.Collection.extend({ 
     model: InstitutionModel, 
     url: '/institutions/' 
    }); 

    return InstitutionsCollection; 
}); 

而如果你需要它,這是我的型號:

define([ 
    'jquery', 
    'underscore', 
    'backbone' 
], function($, _, Backbone){ 

    var InstitutionModel = Backbone.Model.extend({ 

    }); 

    return InstitutionModel; 
}); 

我盯着它一會兒,我只是不知道爲什麼它會拋出這個錯誤。任何幫助是極大的讚賞。

回答

3

當你定義view要導入引導和其映射到在需要回調InstitutionsCollection參數。嘗試更新的代碼如下:

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'collections/InstitutionsCollection', 
    'bootstrap' 
], function($, _, Backbone, InstitutionsCollection){ 

    var InstitutionsView = Backbone.View.extend({ 
     render: function() { 
      var institutions = new InstitutionsCollection(); 

      institutions.fetch({ 
       success: function() { 
        console.log("success!"); 
       } 
      }); 
     } 
    }); 

    return InstitutionsView; 
}); 

它可以是一個真正的痛苦保持同步映射,它真的很容易掃描代碼時忽視!

+0

太好了,就是這樣!我知道這會是這樣的小事,我無法弄清楚。謝謝! –

2

您正在將bootstrap映射到InstitutionsCollection。將其更改爲:

define([ 
    'jquery', 'underscore', 'backbone', 'collections/InstitutionsCollection',   
    'bootstrap' 
], function($, _, Backbone, InstitutionsCollection){}); 
4

正如其他人所建議的,您的參數順序與錯誤匹配的define回調有關。我想指出的糖語法,這有助於緩解這種常見的錯誤:

define(function(require) { 
    var $ = require('jquery'); 
    var _ = require('underscore'); 
    var Backbone = require('backbone'); 
    var InstitutionsCollection = require('collections/InstitutionsCollection'); 
    require('bootstrap'); 

    var InstitutionsView = Backbone.View.extend({ 
     // Code 
    }); 

    return InstitutionsView 
}); 

瞭解更多關於它in the documentation

相關問題