私は一種の失われた感じ、何かを望むが、私は聞いてどのように非常に多くのことを確認これに近づいてさえいないするかどうかはわからない...BACKBONE.JS +リレーショナル+ AMD ...ブートストラップ、関係演算
まず第一に、私はAMDのアプローチ(curl.jsライブラリで)を使用していますが、これはおそらくもっと難しくなりますが、私はこの問題のためにAMDをあきらめていません。
私はサーバーからブートストラップデータの構造を持っていて、 'window.bootstrap'プロパティに格納されています。
Departments = [
{"Id": 1, "Name": "Early Collections" },
{"Id": 2, "Name": "Collections" }
]
Blocks = [
{"Id": 1, "Code": "K", "Department": 1 },
{"Id": 2, "Code": "A", "Department": 2 }
]
ここで私はこのアプローチについて混乱しています。ここに私の 'のDataModel /ブロック' モジュールです:
define [
'Collection/DepartmentCollection'
'DataModel/Department'
], (DepartmentCollection, Department) ->
Backbone.RelationalModel.extend
relations: [
type: Backbone.HasOne
key: 'Department'
relatedModel: Department
collectionType: DepartmentCollection
]
モジュール 'のDataModel /部門は' いかなる関係のない単なるRelationalModelです。また、ここではすべての言及コレクションは、このようなモデルも参照何でもないプレーンです:
define ['DataModel/Department'] , (Department) ->
Backbone.Collection.extend
model: Department
そして最後に、ここでは次のようになり、ブートストラップモジュール、行く:私はこれに期待する
define [
'DataModel/Department'
'Collection/DepartmentCollection'
'DataModel/Block'
'Collection/BlockCollection'
] , (Department, DepartmentCollection, Block, BlockCollection) ->
model = Backbone.RelationalModel.extend
relations: [
type: Backbone.HasMany
key: 'Departments'
relatedModel: Department
collectionType: DepartmentCollection
,
type: Backbone.HasMany
key: 'Blocks'
relatedModel: Block
collectionType: BlockCollection
]
data = window.bootstrap || {}
boot = new model
boot.get('Departments').reset data.Departments || []
boot.get('Blocks').reset data.Blocks || []
return boot
を、それらのブロックの部署を見つけてそこにモデルを割り当ててもらうことができますが、電話は
console.debug ins.get('Blocks').at(0).get('Department')
...私は未定義です。
しかしこれは最後ではありません。私は部署との関係でサーバーから他のエンティティを持つことになります。そして私が見たいのは、自動的にDepartmentをそのブートストラップから取り付けるので、私はそれを透過的に使うことができます。
私はこのリレーショナルライブラリを誤解していたのか、それともAMDの準備ができていないのか分かりません。どんな助けもありがとうございます。
"AMDの準備ができていますか?"したがって、バックボーン・リレーショナルは不可能です。私はあなたのプロセッサブランドとは何の関係もないと仮定しています;)。 – Paul
[CommonJS proposal](http://wiki.commonjs.org/wiki/Modules/AsynchronousDefinition)をお読みください。とにかく、AMDの準備ができているように見える、それはちょうど私のエラーだった。あなたを迷惑して申し訳ありません:)そしてあなたのこの素晴らしい図書館に感謝します。多くの作業を省きます。 – FredyC