设置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: []}
。我意识到这是因为Coffeescription会自动返回函数的最后一行,所以转换后的return this.someArray = []
会返回函数的[]
。我可以通过取消注释裸露的return
命令,甚至像return true
或@baz='foobar'
这样的命令来解决这个问题。但真正奇怪的是,只有当函数的最后一行返回数组时,这才会出错。怎么回事?
那个问题简直要了我的命!实际上不仅仅是数组。只要养成习惯,在控制器的末端返回即可。
编辑:更具体一点。它的angular使用new关键字作为构造函数调用函数。构造函数行为是按照本SO Post 中的规定来指定的
您可以使用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
相关文章:
- 动态插入的表:JQuery未检测到最后一行
- 谷歌地图-数据库中的标记只显示最后一行的信息
- 使用VBScript或Javascript从文本框(文本区域)中删除最后一行空/空行
- 设置AngularJS控制器属性不能是使用Coffeescript的最后一行
- 在每个固定高度段落的最后一行添加省略号,并隐藏溢出 y
- 在表格最后一行(链接)中显示菜单,并在单击菜单项时显示模式窗口
- 如果最后一行已经显示,如何防止jQuery加载更多停止函数
- for循环,直到xml属性不为null.从最后一行开始javascript
- 仅通过最后一行运行Google脚本
- 替换Div.中的最后一行
- 删除表中的最后一行时显示警报窗口
- 使用setAttribute将id设置为元素最后一行的td
- 除去最后一行以外的所有尾部空白
- 将数据表的所有行(最后一行除外)的光标更改为指针
- Javascript定期获取mysql的最后一行
- 删除表的最后一行,除非它是使用 jquery 的唯一行
- 仅获取具体化选择中的最后一行
- 单击“单击”jqgrid“多选缺少最后一行
- 是否可以将光标锁定/聚焦到文本区域的最后一行
- 确保追加的行始终是表中由动态创建的行组成的最后一行..detach().