我可以使用新的'controller as'语法将Typescript类用作AngularJS控制器

时间:2013-05-30 03:33:14

标签: javascript model-view-controller angularjs coffeescript typescript

我正在使用AngularJS和Typescript开发一个Web应用程序,我正在尝试找到在定义控制器时利用Typescript的最佳方法。直观地,控制器只是一个TypeScript类,但AngularJS希望您将所有内容放入$ scope变量。

在AngularJS的持续Alpha版本(1.1.5)中,他们添加了一个新的'controller as' syntax。我听说这个新语法应该有助于与Coffeescript和TypeScript等语言集成,但我不太明白。如果有人有使用TypeScript或CoffeeScript的这种新语法的样本,或者可以提供一些有关如何完成它的见解,我将非常感激。

谢谢!

2 个答案:

答案 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上看到完整示例。