我正在使用Coffeescript并尝试定义一个控制器 使用" HomeController作为homeCtrl"语法。
angular.module('myApp.controllers',[]).controller("HomeController", ->
@someArray = []
# return
)
这已被破坏 - scope.homeCtrl
设置为[]
而不是对象{someArray: []}
。我意识到这是因为Coffeescript自动返回函数的最后一行,因此转换后的return this.someArray = []
返回函数的[]
。我可以通过取消注释裸return
命令,甚至是return true
或@baz='foobar'
之类的命令来解决此问题。但真正奇怪的部分是,当函数的最后一行返回数组时,这只会混乱。发生了什么事?
答案 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