2015-01-31 2 views
1

현재 컬렉션 용 데이터를 가져 오는 중에 문제가 있습니다.Backbone.js - 수집 용 데이터를 가져올 수 없습니다.

Uncaught TypeError: undefined is not a function

router.js :

var App = App || {}; 

App.Router = Backbone.Router.extend({ 
    routes: { 
    '': 'homePage' 
    }, 

    homePage: function() { 
    var airplanesCollection = new App.Airplanes(); 
    airplanesCollection.fetch().then(function(){ 
     var airplanesView = new App.AirplanesView({ collection: airplanesCollection}); 
     $(".container").html(airplanesView.render().el); 
    }); 
    } 
}); 

App.router = new App.Router(); 

컬렉션 파일 airplanes.js :

var App = App || {}; 

App.Airplanes = Backbone.Collection.extend({ 
    model: App.Airplane, 
    url: '/airplanes' 
}); 

모델 파일 airplane.js :

은 콘솔에서이 오류를 제공
var App = App || {} 

App.Airplane = Backbone.Model.extend({ 
    urlRoot: '/airplanes' 
}); 

나는 누군가 내가 잘못 갔다 고 말할 수 있다면.

많은 감사,

프레디.

+1

이 오류는 정확히 어디에서 발생합니까 (줄 번호)? – hindmost

+0

airplainesCollection, fetch()가 실제로 jqXHR 객체를 반환하는지 확인합니다. (http://backbonejs.org/#Model-fetch 및 http://api.jquery.com/jQuery.ajax/#jqXHR 참조). 그게 실패하고, .then()에 대한 호출이 실제로 정의되지 않은 문제가 있다고 생각합니다. –

+0

죄송 합니다만,이 줄에서 발생합니다 : airplanesCollection.fetch(). then (function() { –

답변

0

airplane.js 전에 airplanes.js이로드/실행될 것입니다. 이 경우, 코드 ...

App.Airplanes = Backbone.Collection.extend({ 
    model: App.Airplane, 
    url: '/airplanes' 
}); 

에서 ... undefined을 할 컬렉션의 model을 설정하는 것입니다. 컬렉션에서 fetch()으로 전화를 시도하면 TypeError이 표시됩니다.

단기간에 파일을 하나의 &으로 결합하여 모델이 컬렉션 전에 정의되었는지 확인하십시오. 중기 적으로, RequireJS가 진정한 모듈 자바 스크립트를 수행하는 것을보십시오 - 장래에 엄청난 양의 두통을 줄여 줄 것입니다.

관련 문제