我可以使用AngularJS来处理和加载我的对象

时间:2012-10-03 21:00:53

标签: javascript coffeescript angularjs

我有一些我在代码中使用和扩展的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将所有对象编译成单个文件。现在,如果子类高于基类,则基类将是未定义的,我将收到错误。我正在寻找一种优雅而简单的方法来解决这个问题。

2 个答案:

答案 0 :(得分:1)

使用Angular,您可以将您的类放在命名空间中,因为您的模块/服务的名称可以合格并有效地用于相同的目的。

我认为Angular不会帮助确保您的超类代码在您的子类代码之前运行。为此,似乎有大约8000种解决问题的方法,而且没有一种标准 - requireJs,coffeetoaster,brunch,grunt,cake .......

我使用grunt,并指定我想要连接我的coffeescript的顺序。

答案 1 :(得分:1)

如果你使用Angular的DI系统,它应该确保你的类以正确的顺序实例化,无论先加载哪个。你的例子确实存在问题吗?