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!
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With