2

コードで使用および拡張するいくつかの 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を使用してすべてのオブジェクトを単一のファイルにコンパイルしていることです。子クラスが基本クラスの上にある場合、基本クラスは未定義になり、エラーが発生します。これを解決するエレガントで簡単な方法を探しています。

4

2 に答える 2

1

AngularのDIシステムを使用する場合は、どちらが最初にロードされるかに関係なく、クラスが正しい順序でインスタンス化されるようにする必要があります。あなたの例に実際に問題がありますか?

于 2012-10-04T15:58:08.233 に答える
1

Angular を使用すると、モジュール/サービスの名前を修飾して同じ目的を効果的に果たすことができるため、クラスを名前空間に配置する必要がなくなります。

Angular が役立つとは思わないのは、子クラス コードの前にスーパー クラス コードが実行されるようにすることです。そのためには、問題を解決する方法が約 8000 あるようですが、どれも標準的なものではありません - requireJs、coffeetoaster、ブランチ、うなり声、ケーキ.....

私は grunt を使用し、coffeescript を連結する順序を指定します。

于 2012-10-04T02:39:26.567 に答える