【问题标题】:Can I use Typescript classes as AngularJS controllers using the new 'controller as' syntax我可以使用新的“控制器作为”语法将 Typescript 类用作 AngularJS 控制器吗
【发布时间】:2013-05-25 12:23:32
【问题描述】:

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    是的,它工作正常。只需创建您的类,例如 MainController。然后在您的视图中使用 ng-controller='MainController as vm'。 MainController 类的所有属性都成为 $scope.vm 的成员

    【讨论】:

    • 所以我所要做的就是创建一个名称与 ng-controller 中的任何内容匹配的类,并且 Angular 将调用它的构造函数?另外,如果我将 $location 和 $log 之类的参数放在构造函数中,它们会被注入吗?
    • @rob 是的。只需确保已加载生成的 js。
    【解决方案2】:

    这就是 CoffeeScript 类对我有用的东西。

    class MainCtrl
      newThing: ""
      constructor: (@model)->
    
      someThings: ->
        @model.awesomeThings
    
      addThing: ->
        @model.addThing(@newThing)
    
    
    app.controller 'MainCtrl', ['ThingService', (model)-> 
        new MainCtrl(model)
    ]
    

    您可以在我的plunk 上查看完整示例。

    【讨论】:

      猜你喜欢
      • 2015-12-20
      • 1970-01-01
      • 2014-07-27
      • 2014-02-12
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多