ich ein Modell, das von verschiedenen Ansichten zugegriffen werden muss, und dies in der Definition des Modellmoduls zu erreichen, ich bin es sofort wie so Instanziierung:Singleton Backbone Modelle mit RequireJS: Anti-Pattern?
define([
'jquery',
'underscore',
'backbone'
], function(_, Backbone) {
var Foo = Backbone.Model.extend({
// wondrous methods and properties
});
return new Foo();
});
ich wirklich nur noch eine Instanz dieses Modells - Im Moment ist das so. Die Umgehung dafür, soweit ich weiß, ist ein separates App
Modul. Etwas wie:
define([], function() {
var App = {
routers: {},
models: {},
views: {}
};
return App;
});
, auf das Sie instanziiert und speichern können Verweise auf Objekte auf app starten:
require([
'App',
'Foo'
], function(App, Foo) {
App.models.foo = new Foo();
});
aber ich mag dieses Gefühl, eine schlechte Alternative, da Sie im Wesentlichen gehen wieder ein zu haben, globaler Namespace - etwas, das RequireJS vermeiden sollte.
Gibt es Alternativen und gibt es einen guten Grund, Singleton-Modelle wie oben beschrieben zu vermeiden?
Sie sollten völlig in Ordnung sein, wie Sie es in Ihrem ersten Beispiel getan haben. –