使用Coffeescript设置AngularJS控制器属性不能是最后一行

时间:2015-03-24 15:02:48

标签: javascript angularjs coffeescript

我正在使用Coffeescript并尝试定义一个控制器 使用" HomeController作为homeCtrl"语法。

angular.module('myApp.controllers',[]).controller("HomeController", ->

    @someArray = []

    # return
)

这已被破坏 - scope.homeCtrl设置为[]而不是对象{someArray: []}。我意识到这是因为Coffeescript自动返回函数的最后一行,因此转换后的return this.someArray = []返回函数的[]。我可以通过取消注释裸return命令,甚至是return true@baz='foobar'之类的命令来解决此问题。但真正奇怪的部分是,当函数的最后一行返回数组时,这只会混乱。发生了什么事?

2 个答案:

答案 0 :(得分:1)

那个问题杀了我!它实际上不仅仅是数组。只需养成在控制器末端返回的习惯。

编辑:更具体。它的角度使用 new 关键字将该函数称为构造函数。根据{{​​3}}

中的指定指定构造函数行为

答案 1 :(得分:0)

您可以使用CoffeeScript class关键字强制CS创建类构造函数:

angular.module('myApp.controllers',[]).controller "HomeController", class
  constructor: ->
    @someArray = []

或者,您可以创建命名类,然后将其传递给angular.js:

class HomeController
  constructor: ->
    @someArray = []

angular.module('myApp.controllers',[]).controller "HomeController", HomeController