2012-08-04 3 views
0

J'essaie d'utiliser Backbone avec Django.backbone-tastypie: Taille maximale de la pile d'appels dépassée

J'ai d'abord pris l'exemple local de travail de Backbone de todomvc: https://github.com/addyosmani/todomvc/tree/master/architecture-examples/backbone

Je voulais alors utiliser le serveur au lieu du stockage local. J'ai donc choisi django-tastypie pour l'API REST. J'ai testé l'API REST avec un client REST (facteur) dans mon navigateur et cela fonctionne. Je voulais ensuite le faire fonctionner avec l'exemple todomvc. J'ai mis en place quelques choses pour utiliser le serveur et non le stockage local. J'ai la petite couche de conversion backbone-tastypie.js comme tout le monde le recommande. (Https://github.com/PaulUithol/backbone-tastypie/blob/master/backbone_tastypie/static/js/backbone-tastypie.js)

Cependant, je reçois un RangeError: taille de la pile d'appel maximal dépassé lorsque J'utilise la méthode fetch sur ma collection lorsque j'utilise la couche backbone-tastypie.js.

Une idée?

Plus de détails sur l'erreur:

a = window.App 
a.Todos.fetch() 
RangeError: Maximum call stack size exceeded 
arguments: Array[0] 
length: 0 
__proto__: Array[0] 
concat: function concat() { [native code] } 
constructor: function Array() { [native code] } 
every: function every() { [native code] } 
filter: function filter() { [native code] } 
forEach: function forEach() { [native code] } 
indexOf: function indexOf() { [native code] } 
join: function join() { [native code] } 
lastIndexOf: function lastIndexOf() { [native code] } 
length: 0 
map: function map() { [native code] } 
pop: function pop() { [native code] } 
push: function push() { [native code] } 
reduce: function reduce() { [native code] } 
reduceRight: function reduceRight() { [native code] } 
reverse: function reverse() { [native code] } 
shift: function shift() { [native code] } 
slice: function slice() { [native code] } 
some: function some() { [native code] } 
sort: function sort() { [native code] } 
splice: function splice() { [native code] } 
toLocaleString: function toLocaleString() { [native code] } 
toString: function toString() { [native code] } 
unshift: function unshift() { [native code] } 
__proto__: Object 
get message: function() { [native code] } 
arguments: null 
caller: null 
length: 0 
name: "" 
prototype: Object 
__proto__: function Empty() {} 
set message: function() { [native code] } 
arguments: null 
caller: null 
length: 1 
name: "" 
prototype: Object 
__proto__: function Empty() {} 
stack: undefined 
type: "stack_overflow" 
__proto__: Error 
arguments: undefined 
constructor: function RangeError() { [native code] } 
name: "RangeError" 
stack: undefined 
type: undefined 
__proto__: SetUpError.d 
+0

Qu'est-ce que votre look de code comme? Il y a probablement une boucle infinie qui se cache quelque part. –

+0

Mu a probablement raison. De mon expérience (limitée) avec tastypie, une taille maximale de pile d'appel dépassée résulte d'une boucle infinie - et souvent cela remplit des ressources intégrées dans votre code tastypie. – bento

+0

Désolé pour la réponse tardive, je n'avais plus accès à internet. J'étais en train d'essayer d'adapter l'exemple backbone de todomvc pour utiliser le serveur au lieu d'un stockage local: https://github.com/addyosmani/todomvc/tree/master/architecture-examples/backbone – Michael

Répondre

0

Dans vos ressources, avez-vous quelque chose comme:

class MyResource1(ModelResource): 
    attr1 = fields.ForeignKey('app.api.MyResource2', 'attr1', full=True) 

    class Meta: 
     queryset = bla bla 
     . 
     . 
     . 

class MyResource2(ModelResource): 
     attr2 = fields.ForeignKey('app.api.MyResource1', 'attr2', full=True) 

    class Meta: 
     queryset = bla bla 
     . 
     . 
     . 
Questions connexes