3

저는 AngularJS 및 Typescript를 사용하는 웹 응용 프로그램에서 작업하고 있습니다. Typescript를 사용할 수있는 가장 좋은 방법을 찾으려고합니다. 정의 컨트롤러. 직관적으로 컨트롤러는 TypeScript 클래스 일 뿐이지 만 AngularJS는 모든 것을 $ scope 변수에 넣기를 원합니다.새로운 '컨트롤러 형식'구문을 사용하여 Typescript 클래스를 AngularJS 컨트롤러로 사용할 수 있습니까?

AngularJS (1.1.5)의 마지막 알파 버전에서 새로운 'controller as' syntax을 추가했습니다. 이 새로운 구문이 Coffeescript 및 TypeScript와 같은 언어와 통합되는 데 도움이된다고 들었지만 어떻게 이해할 수는 없습니다. 누구든지 TypeScript 또는 CoffeeScript와 함께이 새로운 구문을 사용하는 샘플을 가지고 있거나 어떻게 할 수 있는지에 대한 통찰력을 제공 할 수 있다면 크게 감사하겠습니다.

감사합니다.

답변

3

예 제대로 작동합니다. MainController와 같은 클래스를 만드십시오. 그런 다음 ng-controller = 'MainController as vm'을 사용하십시오. MainController 클래스의 모든 속성은 $ scope.vm의 멤버가됩니다.

+0

그래서 내가해야 할 일은 이름이 ng-controller이고 각도가 일치하는 클래스를 생성하여 생성자라고 부르는 것입니다. 또한 생성자에 $ location 및 $ log와 같은 매개 변수를 넣으면 해당 변수가 주입됩니까? – rob

+0

@rob yup. 생성 된 js가로드되었는지 확인하십시오. – basarat

1

이것이 CoffeeScript 클래스에서 저에게 효과적이었습니다.

class MainCtrl 
    newThing: "" 
    constructor: (@model)-> 

    someThings: -> 
    @model.awesomeThings 

    addThing: -> 
    @model.addThing(@newThing) 


app.controller 'MainCtrl', ['ThingService', (model)-> 
    new MainCtrl(model) 
] 

plunk에 대한 전체 예제를 볼 수 있습니다.

관련 문제