我正在使用AngularJS和Typescript开发一个Web应用程序,我正在尝试找到在定义控制器时利用Typescript的最佳方法。直观地,控制器只是一个TypeScript类,但AngularJS希望您将所有内容放入$ scope变量。
在AngularJS的持续Alpha版本(1.1.5)中,他们添加了一个新的'controller as' syntax。我听说这个新语法应该有助于与Coffeescript和TypeScript等语言集成,但我不太明白。如果有人有使用TypeScript或CoffeeScript的这种新语法的样本,或者可以提供一些有关如何完成它的见解,我将非常感激。
谢谢!
答案 0 :(得分:3)
是的,它运作正常。只需创建您的类,例如MainController。然后在您的视图中使用ng-controller ='MainController as vm'。 MainController类的所有属性都成为$ scope.vm
的成员答案 1 :(得分:1)
这适用于CoffeeScript类。
class MainCtrl
newThing: ""
constructor: (@model)->
someThings: ->
@model.awesomeThings
addThing: ->
@model.addThing(@newThing)
app.controller 'MainCtrl', ['ThingService', (model)->
new MainCtrl(model)
]
您可以在plunk上看到完整示例。