Dopo un'altra lunga ricerca, sth esce :-) Sembra che il problema riguardi la funzione "getObjectByName". Non può funzionare bene con requireJS (ADM). Attualmente, devo installare un globel var per risolvere il problema. Sono sicuro che ci deve essere una soluzione migliore.Come rendere Backbone-Relational (0.8.5) funziona con RequireJS?
Qui è la mia temperatura soluton:
(1) installare una var globale e impostare la ricerca di modello di libero sviluppo del globale ("APP")
var APP = {};
define(['backbone-relational'], function(){
Backbone.Relational.store.addModelScope(APP);
})
(2) esportare il modello di relazione con the global
APP.YourRelationalModel = YourRelationModel;
Funziona, non va bene però ... Non vedo davvero l'ora di una risposta migliore. Grazie.
versioni // ------------
prova:
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
codice è molto semplice: (o vedi 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();
});
Salva sopra il codice a main.js e incluso nel index.html come segue:
Non funziona. C'è un messaggio di avvertimento:
Relation=child: missing model, key or relatedModel (function(){ return parent.apply(this, arguments); }, "child", undefined).
ho letto il codice sorgente di backbone-relazionale e sapere che c'è qualcosa che non va con lo spazio dei nomi. Relational-Backbone non può trovare il relatedModel definito in "Parent" (cioè non può trovare releatedMode: "Child"). Non sono riuscito a trovare la soluzione per risolvere questo problema a causa della mia conoscenza limitata di javascript :-)
Qualcuno può aiutarmi con questo?
Prima ho chiesto alla mia domanda, ho studiato le seguenti soluzioni:
Backbone.RelationalModel using requireJs
Can't get Backbone-relational to work with AMD (RequireJS)
Loading Backbone.Relational using Use! plugin
Nessuno di loro ha lavorato in questo caso.
Dopo un'altra lunga ricerca, sth viene fuori :-) Sembra che il problema riguardi la funzione "getObjectByName". Non può funzionare bene con requireJS (ADM). Attualmente, devo installare un globel var per risolvere il problema. Sono sicuro che ci deve essere una soluzione migliore. Qui è il mio soluton temp: (1) impostare un var globale e impostare l'ambito del modello di ricerca sull'app globale ("APP") var = {}; define (funzione [ 'spina dorsale-relazionale'],() { Backbone.Relational.store.addModelScope (APP); }) (2) – bighammer