设置 AngularJS 控制器 属性 不能是使用 Coffeescript 的最后一行
Setting AngularJS controller property cannot be last line using Coffeescript
我正在使用 Coffeescript 并试图定义一个控制器,它将
使用 "HomeController as homeCtrl" 语法。
angular.module('myApp.controllers',[]).controller("HomeController", ->
@someArray = []
# return
)
这已损坏 - scope.homeCtrl
被设置为 []
而不是对象 {someArray: []}
。我意识到这是因为 Coffeescript 自动 returns 函数的最后一行,所以转译后 return this.someArray = []
returns []
为函数。我可以通过取消注释裸露的 return
命令或什至像 return true
或 @baz='foobar'
这样的命令来解决这个问题。但真正奇怪的是,只有当函数的最后一行 returns 是一个数组时,这才会搞砸。怎么回事?
那个问题快要死了!它实际上不仅仅是数组。养成在控制器末尾 return 的习惯。
编辑:更具体一点。 angular 使用 new 关键字将函数作为构造函数调用。构造函数行为在 This SO Post
中指定
您可以使用 CoffeeScript class
关键字来强制 CS 创建一个 class 构造函数:
angular.module('myApp.controllers',[]).controller "HomeController", class
constructor: ->
@someArray = []
或者,您可以创建名为 class,然后将其传递给 angular.js:
class HomeController
constructor: ->
@someArray = []
angular.module('myApp.controllers',[]).controller "HomeController", HomeController
我正在使用 Coffeescript 并试图定义一个控制器,它将 使用 "HomeController as homeCtrl" 语法。
angular.module('myApp.controllers',[]).controller("HomeController", ->
@someArray = []
# return
)
这已损坏 - scope.homeCtrl
被设置为 []
而不是对象 {someArray: []}
。我意识到这是因为 Coffeescript 自动 returns 函数的最后一行,所以转译后 return this.someArray = []
returns []
为函数。我可以通过取消注释裸露的 return
命令或什至像 return true
或 @baz='foobar'
这样的命令来解决这个问题。但真正奇怪的是,只有当函数的最后一行 returns 是一个数组时,这才会搞砸。怎么回事?
那个问题快要死了!它实际上不仅仅是数组。养成在控制器末尾 return 的习惯。
编辑:更具体一点。 angular 使用 new 关键字将函数作为构造函数调用。构造函数行为在 This SO Post
中指定您可以使用 CoffeeScript class
关键字来强制 CS 创建一个 class 构造函数:
angular.module('myApp.controllers',[]).controller "HomeController", class
constructor: ->
@someArray = []
或者,您可以创建名为 class,然后将其传递给 angular.js:
class HomeController
constructor: ->
@someArray = []
angular.module('myApp.controllers',[]).controller "HomeController", HomeController