2

modelsモデルファイル用のフォルダーがあります。各ファイルには 1 つのモデルが含まれます。モデル間には多くの関係があります (hasMany、begsTo)。hasMany リレーションを設定する場合は、子モデルが既に定義されている必要があります。そうしないと、エラーが発生します。

Error: assertion failed: The first argument DS.belongsTo must be a model type or string, like DS.belongsTo(App.Person)

モデル(上の例だとApp.Person)がまだ定義されていないためです。

リレーション定義の 1 つを次に示します。

App.Seat = DS.Model.extend(
  number: DS.attr('number')
  tour: DS.belongsTo(App.Tour)
)

models フォルダーは次のように含まれています。

//= require_tree ./models

私は、すべてのモデル (または少なくとも相互に関係があるモデル) を 1 つのファイルで定義するソリューションを知っています。

質問: すべてのモデルを個別のファイルに保持できる他のソリューションはありますか?

4

1 に答える 1

1

私は非常に簡単な解決策を見つけました:すべての関係をオブジェクトとしてではなく定義します(例App.Tour):

App.Seat = DS.Model.extend(
  number: DS.attr('number')
  tour: DS.belongsTo(App.Tour) # <<<<<<<<<<<============ ***here***
)

ただし、文字列(例"App.Tour")として引用符で囲むだけです:

App.Seat = DS.Model.extend(
      number: DS.attr('number')
      tour: DS.belongsTo("App.Tour") # <<<<<<<<<<<============ ***here***
    )

この「回避策」は、javascript の制限によるものだと思います。

更新: ember.js では文字列の使用が推奨れます

于 2013-02-15T15:53:59.320 に答える