2017-01-16 2 views
2

모듈 기반 앱이 있습니다. 응용 프로그램은 모듈을로드하고 각 모듈은 컨트롤러와 라우터를로드하며 라우터는보기를로드합니다.ES6에서 각도 1.5.0 - 컨트롤러 내보내기가 작동하지 않습니다.

... 
module.controller('Ctrl', function(){ 
    const vm = this 
    // Controller stuff 
}); 
... 

을하지만이 같은 외부 파일에서로드하려고하면 그렇지 않은 :

// module.controller.js 
function Ctrl(){ 
    // Controller stuff 
} 
export default Ctrl 

을 그리고 다음과 같이 호출 :이 같이 사용하는 경우 잘 컨트롤러 바인딩 작품

// module.js 
import controller from './module.controller.js' 
... 
module.controller(controller.name, controller) 
... 

아직도 controller.name 유효한 문자열이고 'Ctrl'controller 유효한 함수이다. 컨트롤러 기능이나 다른 것을 내보내는 다른 방법 같은 것이 누락 되었습니까?

감사

+0

이 가져 오기에서 올바른 데이터를 수신하고 있습니까? 가져온 값을 콘솔하면 컨트롤러 모듈 선언에서 사용중인 모든 것을 얻을 수 있습니다. –

+0

예, 'file.js'에서 컨트롤러를 가져오고 ~ controller.name ~을 (를) 기록하려고하면 올바른 문자열이 인쇄되고 ~ controller ~를 출력하면 유효한 함수가 반환됩니다. 그러나 속성에 관해서는 함수에서 반환 한 값에만 액세스 할 수 있으며 각도 컨트롤러는 ~ ~ ~을 자동으로 반환해야합니다. –

답변

1

그것은 당신이 컨트롤러를 만들 function를 사용하는 것을 볼 수있다, 그러나 당신이 그것을에서 생성자, 클래스를 사용해야합니다. 종속성이 생성자에 주입하고 범위의 건물을 연결 한 경우에는 액세스 할 수 있습니다

export default class Ctrl { 
    /** @ngInject */ 
    constructor($timeout) { 
     this.name = 'Ctrl'; 
     this.$timeout = $timeout; 

     this.consoleName(); 
    } 
    consoleName() { 
     var vm = this; 

     this.$timeout(function() { 
      console.log(vm.name); 
     }, 1000); 
    } 
} 

JSFiddle을 :

https://medium.com/@daviddentoom/switching-to-es6-with-angular-1-x-is-easy-a08c40c2fc72#.e7i1avfqp : https://jsfiddle.net/7fq4dnt9/

내가 구문과 선언을 비교하기 위해이 글을 추천합니다.

+1

그게 내가 필요로하는 모든 경우에 내 문제를 해결, 감사합니다. 하지만 일부 테스트 후에도 일부 서버에서는 모든 코드를 변경하지 않고 일부 서버에서 작업했기 때문에 일부 서버 구성 문제와 같은 것처럼 보입니다. –

관련 문제