javascript - Set a Backbone collection model with circular dependencies in requirejs -
the thing have circular dependecy between backbone modules have use "exports" requirejs scpecifies in documentation http://requirejs.org/docs/api.html#circular. model 'a' this:
define(function(require, exports) { var b = require('b'); var = backbone.model.extend({ }); exports.model = a; }); and collection 'b' this:
define(function(require, exports) { var = require('a'); var b = backbone.model.extend({ model: a.model }); exports.model = b; }); the problem here time have specify collection 'b' model property, model 'a' isn't yet defined. error i'm getting when try set collection models this:
b.collection.set([{id: 1}, {id: 2}]); uncaught typeerror: 'undefined' not object (evaluating 'targetmodel.prototype') (http://127.0.0.1:9999/bower_components/backbone/backbone.js:689) any ideas on how should solve problem?
from example, it's not clear b depends on a. if it's model:collection relationship, might make sense remove dependency of model on collection. if it's @ possible break circular dependency, encourage so.
if back-reference required, though, 1 option might move resources same module , sort of lazy export:
define(function() { var lazythings = { a: null, b: null }; lazythings.a = backbone.model.extend({ collection: things.b }); lazythings.b = backbone.collection.extend({ model: }); return lazythings; }); alternatively, return lazythings.b , later access model prototype:
require('b', function (b) { var = b.prototype.model; // }); finally, requirejs made work calling respective dependencies lazily (i.e., after modules resolved):
// b define(['a'], function (a) { return function () { return backbone.collection.extend({ model: a() }); } }); // define(['b'], function (b) { return function () { return backbone.model.extend({ model: b() }); } });
Comments
Post a Comment