別の長い調査の後、sthが出てきました:-) 問題は関数「getObjectByName」にあるようです。requireJS(ADM)ではうまく動作しません。現在、問題を解決するために global var をセットアップする必要があります。より良い解決策があるに違いないと確信しています。
これが私の一時的な解決策です:
(1) グローバル変数をセットアップし、検索モデルのスコープをグローバル (「APP」) にセットアップします。
var APP = {};
define(['backbone-relational'], function(){
Backbone.Relational.store.addModelScope(APP);
})
(2) リレーションモデルをグローバルにエクスポート
APP.YourRelationalModel = YourRelationModel;
うまくいきますが、うまくいきません...より良い答えを本当に楽しみにしています。ありがとう。
//------------
テスト バージョン:
1.Backbone-Relational 0.8.5
2.Backbone 1.0.0 and Underscore 1.4.4
3.JQuery 1.8.3
4.RequireJS 2.1.5
コードは非常に単純です: (またはhttps://github.com/bighammer/test_relational_amd.gitを参照)
require.config({
paths : {
js : 'js',
jquery : 'js/jquery-1.8.3',
underscore : 'js/underscore',
backbone : 'js/backbone',
'backbone-relational' : 'js/backbone-relational'
},
shim : {
underscore : {
exports : '_'
},
backbone : {
deps : ['underscore', 'jquery'],
exports : 'Backbone'
},
'backbone-relational' : {
deps: ['backbone']
}
}
});
define(['backbone', 'backbone-relational'], function (Backbone) {
var Child = Backbone.RelationalModel.extend();
var Parent = Backbone.RelationalModel.extend({
relations : [
{
key : 'child',
type : Backbone.HasOne,
relatedModel : 'Child'
}
]
});
var test = new Parent();
});
上記のコードを main.js に保存し、次のように index.html に含めます。
うまくいきません。警告メッセージがあります:
Relation=child: missing model, key or relatedModel (function (){ return parent.apply(this, arguments); }, "child", undefined).
backbone-relational のソース コードを読んで、名前空間に問題があることを知りました。Relational-Backbone が「Parent」で定義された relatedModel を見つけることができません (つまり、releatedMode:「Child」が見つかりません)。私のjavascriptの知識が限られているため、これを修正する解決策を見つけることができませんでした:-)
誰でもこれで私を助けることができますか?
質問する前に、次の解決策を調べました。
requireJs を使用
する Backbone.RelationalModel Backbone-relational を AMD で動作させることができない (RequireJS)
Use! を使用して Backbone.Relational をロードする プラグイン
この場合、それらのどれも機能しませんでした。