После очередного долгого исследования выходит sth :-) Похоже, проблема в функции "getObjectByName". Это не может хорошо работать с requireJS (ADM). В настоящее время мне нужно настроить глобальную переменную, чтобы решить эту проблему. Я уверен, что должно быть лучшее решение.
Вот мой временный раствор:
(1) настроить глобальную переменную и настроить область модели поиска на глобальную («ПРИЛОЖЕНИЕ»)
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 не может найти связанную модель, определенную в «родительском» (т. е. не может найти releatedMode: «дочерний»). Мне не удалось найти решение, чтобы исправить это из-за моего ограниченного знания javascript :-)
Кто-нибудь может мне с этим помочь?
Прежде чем задать свой вопрос, я изучил следующие решения:
Backbone.RelationalModel с использованием requireJs
Не удается заставить Backbone-relational работать с AMD (RequireJS)
Загрузка Backbone.Relational с использованием Use! плагин
Ни один из них не работал в этом случае.