我有一些我在代码中使用和扩展的CoffeeScript类。我怎样才能使用angularjs来创建像
这样的常用模块MyNamespace = MyNamespace || {}
MyNamespace.SuperClass = class
并在另一个文件中
MyNamespace = MyNamespace || {}
class ChildClass extends MyNamespace.SuperClass
MyNamespace.ChildClass = ChildClass
我可以简单地写一下
angular('MyModule').factory, 'SuperClass', () ->
class SuperClass
constructor: (@id) ->
return SuperClass
并通过
从该课程扩展angular('MyModule').factory, 'ChildClass', ['SuperClass', (SuperClass) ->
class ChildClass extends SuperClass
constructor: (id) ->
super(id)
return ChildClass
]
我的问题实际上是我使用CoffeeScript将所有对象编译成单个文件。现在,如果子类高于基类,则基类将是未定义的,我将收到错误。我正在寻找一种优雅而简单的方法来解决这个问题。
答案 0 :(得分:1)
使用Angular,您可以将您的类放在命名空间中,因为您的模块/服务的名称可以合格并有效地用于相同的目的。
我认为Angular不会帮助确保您的超类代码在您的子类代码之前运行。为此,似乎有大约8000种解决问题的方法,而且没有一种标准 - requireJs,coffeetoaster,brunch,grunt,cake .......
我使用grunt,并指定我想要连接我的coffeescript的顺序。
答案 1 :(得分:1)
如果你使用Angular的DI系统,它应该确保你的类以正确的顺序实例化,无论先加载哪个。你的例子确实存在问题吗?