Центральная модель магистрали JS, в которой могут использоваться все виды - PullRequest
0 голосов
/ 02 апреля 2012

Я новичок в магистрали js и требую js.

Я использую requirejS для организации своего магистрального кода в модули.Я не знаю, имеет ли это какое-то значение для того, чего я хочу.Я хочу иметь центральную модель, к которой будут иметь доступ все мои взгляды.Они должны иметь возможность получать и устанавливать значения.Я не хочу использовать это как каждую модель представления все же.Мне нужно сохранить в памяти параметры поиска, статус пользователя (вход / выход) и т. Д.

Есть идеи?

РЕДАКТИРОВАТЬ

Возможно, ответздесь?

Совместное использование ресурсов различными модулями amd

Ответы [ 2 ]

4 голосов
/ 02 апреля 2012

Если я хорошо понял, что вы хотите, я скажу, что вам не нужно ничего особенного, чтобы иметь один Model в нескольких Views, просто сделайте это:

// code simplified and no tested
App.Model = Backbone.Model.extend({});
App.View  = Backbone.View.extend({});

var myModel = new App.Model();
var viewOne = new App.View({ model: myModel });
var viewTwo = new App.View({ model: myModel });

Обновлено после пояснения комментария

Вы можете передать пользовательский параметр в View.initialize:

// code simplified and no tested
App.Model       = Backbone.Model.extend({});
App.CommonModel = Backbone.Model.extend({});

App.View = Backbone.View.extend({
  initialize: function( opts ){
    this.commonModel = opts.commonModel;
  }
});

var myModelOne    = new App.Model();
var myModelTwo    = new App.Model();
var myCommonModel = new App.CommonModel();

var viewOne = new App.View({ model: myModelOne, commonModel: myCommonModel });
var viewTwo = new App.View({ model: myModelTwo, commonModel: myCommonModel });
2 голосов
/ 03 апреля 2012

С помощью requirejs я бы создал модуль, который определяет одноэлементную модель, скажем, app / settings.js

define(['backbone'], function (Backbone) {
    var Settings = Backbone.Model.extend({
    });

    return new Settings();
});

и вытащил его в другие мои модули, например

define(['backbone', 'app/settings'], function (Backbone, settings) {
    settings.set("pref", "my pref");
});

Последующие вызовы app / settings.js вернут тот же объект.

...