Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I use Typescript classes as AngularJS controllers using the new 'controller as' syntax

I'm working on a web app using AngularJS and Typescript and I'm trying to find the best way to take advantage of Typescript when it comes to defining controllers. Intuitively a controller would just be a TypeScript class but AngularJS wants you to put everything into the $scope variable.

In the lasted Alpha release of AngularJS (1.1.5) they have added a new 'controller as' syntax. I've heard that this new syntax should help integrate with languages like Coffeescript and TypeScript but I don't quite understand how. If anyone has a sample of using this new syntax with TypeScript or CoffeeScript or can provide some insight into how it could be done I'd greatly appreciate it.

Thanks!

like image 237
rob Avatar asked Apr 28 '26 17:04

rob


2 Answers

Yes it works fine. Just create your class e.g MainController. Then in your view use ng-controller='MainController as vm'. All properties of MainController class become members of $scope.vm

like image 189
basarat Avatar answered Apr 30 '26 07:04

basarat


This is what worked for me with CoffeeScript classes.

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

  someThings: ->
    @model.awesomeThings

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


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

You can see the full example on my plunk.

like image 23
csharon Avatar answered Apr 30 '26 07:04

csharon