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

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

本文关键字:controller 语法 as 控制器 Typescript 可以使 我可以 AngularJS      更新时间:2023-09-26

我正在使用AngularJS和Typescript开发一个web应用程序,我试图找到在定义控制器时利用Typescript的最佳方法。直观上,控制器只是一个TypeScript类,但AngularJS希望你把所有东西都放到$scope变量中。

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

谢谢!

可以。只需创建你的类,例如MainController。然后在视图中使用ng-controller='MainController as vm'。MainController类的所有属性都成为$scope.vm

的成员

这就是我使用CoffeeScript类的方法。

class MainCtrl
  newThing: ""
  constructor: (@model)->
  someThings: ->
    @model.awesomeThings
  addThing: ->
    @model.addThing(@newThing)

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