2015-02-01 2 views
0

내 경로에 대한 상속 체계를 구현하고 싶습니다. 모든 내 경로가 내 ApplicationController에서 상속 받길 원합니다.Iron 라우터 컨트롤러 상속, 파일 외부에서 ApplicationController에 액세스하기

ApplicationController = RouteController.extend({ 
    subscriptions: function() { 
    this.user = Meteor.subscribe('userEarnings', Meteor.userId()); 
    }, 
    data: function() { 
    return { 
     currentUser: Users.findOne(), 
     userReady: this.user.ready() 
    }; 
    } 
}); 

모든 사용자 정의 필드가 내 사용자 모음에 가입되어 있는지 확인합니다. 위의 파일을 client/lib/routes/main.js에 저장했습니다. 나는이

historyController = ApplicationController.extend({ 
    layoutTemplate: 'dashboardLayout', 
    subscriptions: function() { 
    this.subs = Meteor.subscribe("userPurchaseHistory", Meteor.userId()); 
    }, 
    data: function() { 
    console.log(this.user.ready()); 
    return { 
     purchases: Purchases.find(), 
     ready: this.subs.ready() 
    }; 
    } 
}); 

Router.route('history', { 
    path: '/history', 
    loginRequired: 'entrySignIn', 
    controller: historyController 
}); 

처럼 ApplicationControllerclient/lib/routes/*.js 내 다른 컨트롤러를 확장 할 수 있기를 원하지만 현재 나는

Uncaught ReferenceError: ApplicationController is not defined

가 어떻게 그 파일의 ApplicationController 외부에서 액세스 할 수있는거야? var을 사용하지 않으면 변수에 전역 적으로 액세스 할 수 있다고 생각했습니다.

답변

1

로드 순서 문제입니다. the docs에 따라 :.

파일로드 순서

주 일치하는 모든 파일 * 순서를 유지, 다른 모든 후 이동합니다.

...

디렉토리 내에서 파일 이름은 파일 이름순으로로드됩니다.

ApplicationController 정의를 client/lib/routes/application-controller/application-controller.js 또는 그와 비슷한 것으로 설정하여 다른 컨트롤러가 그 컨트롤러에서 상속을 시도하기 전에 확실히 실행되도록하십시오. main.js이라고 부르지 않았다면 하위 디렉토리에 넣으면 상위 디렉토리의 항목 앞에 추가되었는지 확인하고 잠재적 인 사전 순 순서 문제를 방지 할 수 있습니다.

+0

완벽하게 작동했습니다. 감사합니다. – Tarlen

관련 문제