0

というバックボーン アプリケーション モジュールがapp.jsあります。これは次のようになります。

// module: app
define([
  'Marionette',
  'collections/links'
], function (Marionette, Links) {

  var app = Marionette.Application()

  app.addInitializer(function () {
    new Links()
  })

  return app

})

appモジュールはインスタンスを作成し、Marionette.Application適切な初期化子を追加します。Linksこれらの 1 つは、コレクションのインスタンスを作成することです。

ただし、私のモジュールは、そのオブザーバー システムcollections/linksのモジュールに依存しています。app

// module: collections/links
define([
  'app',
  'Backbone'
], function (app, Backbone) {

  var Links = Backbone.Collection.Extend({
    initialize: function () {
      // Outputs undefined
      console.log(app)
      // This then wouldn't work because app hasn't been initialised:
      // app.on('someEvent', function () {})
    }
  })

  return Links

})

このモジュールは の依存関係としてリストされており、このモジュールの依存関係であるためappapp再帰的な依存関係があることに気付きました。最終的に、RequireJSはロードされるcollections/links前にモジュールを初期化するように見えます。app

AMD を使用してアプリケーションを設計し、モジュールとモジュールをapp使用できるようにするにはどうすればよいですか?collections/linkscollections/linksapp

4

1 に答える 1

0

app次に、イベント マネージャとイニシャライザの 2 つのモジュールを作成する必要があります。

問題は、appモジュールがモジュール化されていないことです (単一のタスク/懸念がない)、それは一緒にスローされたコードの束です。

ところで、Backbone 0.9.9 の時点で、Backboneobject はグローバル イベント マネージャです。さらに、独自のものを作成するのは非常に簡単です_.extend({}, Backbone.Events)

于 2013-03-15T17:57:01.767 に答える