7

Konfiguruję strukturę kategorii zagnieżdżonych w Kręgosłupie z RequireJS.Okrężna zależność w zestawie zagnieżdżonym/RequireJS zagnieżdżonym

W tej strukturze kolekcja kategorii zawiera modele kategorii, a pojedynczy model kategorii może zawierać kolekcję kategorii.

Niestety wydaje się to powodować problem przerywanych zależności cyklicznych w RequireJS. Przeczytałem dokumenty na temat RequireJS (http://requirejs.org/docs/api.html#circular), ale znajduję wyjaśnienie z "mylące" i "b" mylące.

Oto mój kod, który jest przyczyną problemu:

define([ 

    "jquery", 
    "underscore", 
    "backbone", 
    "collections/categories" 

    ], function($, _, Backbone, CategoriesCollection) { 

    var Category = Backbone.Model.extend({ 

     defaults: { 
      title: "Untitled" 
     }, 

     parse: function(data) { 
      this.children = new CategoriesCollection(data.children, {parse: true}); 
      return _.omit(data, "children"); 
     } 

    }); 

    return Category; 

}); 

...

define([ 

    "jquery", 
    "underscore", 
    "backbone", 
    "models/category" 

    ], function($, _, Backbone, CategoryModel) { 

    var Categories = Backbone.Collection.extend({ 
     model: CategoryModel 
    }); 

    return Categories; 

}); 

Zastanawiam się, czy ktoś, kto doświadczył tego wcześniej może pomóc pokierować mnie we właściwym kierunku .

Dzięki (z góry) za pomoc,

Odpowiedz

11

Wystarczy użyć require kolekcji ponownie, gdy jest to potrzebne w modelu, jak upływ Collection początkowo może być zdefiniowana:

define([ 

    "jquery", 
    "underscore", 
    "backbone", 
    "collections/categories" 

    ], function($, _, Backbone, CategoriesCollection) { 

    var Category = Backbone.Model.extend({ 

     defaults: { 
      title: "Untitled" 
     }, 

     parse: function(data) { 
      if(!CategoriesCollection){ 
       CategoriesCollection = require("collections/categories"); 
      } 

      this.children = new CategoriesCollection(data.children, {parse: true}); 
      return _.omit(data, "children"); 
     } 

    }); 

    return Category; 

}); 

W przykładzie one importować również require ale powinien również pracować bez import.

+0

Działa wspaniale, dzięki – user1031947

+0

Mężczyzna - W jednym z moich projektów próbowałem rozwiązać problem zależności cyrkulacji, co bardzo mi pomogło - dzięki bukiecikom. – Stevus

+0

Może to powodować problemy, ponieważ ładowanie kolekcji po raz drugi może być asynchroniczne? –

0

Do tego należy wziąć pod uwagę użycie wtyczki jak Backbone Relational.

+0

Dzięki, spojrzałem na Backbone Relational. Mam wrażenie, że dla prostej listy zagnieżdżonej, która jest wszystkim, czego potrzebuję, jest to trochę przesada. – user1031947