Цитата:
|
смотря в каких случаях. Может конструктор создает вспомогательные объекты, необходимые для работы app.
|
Синглетоны там разместить можно, обьекты вроде конфигов, но неболее.
собственно пример как можно связать контролёры и модели в MVP,
тут реализовано сразу два подхода, app.Model является доступной сразу для двух контролёров
в тоже время у каждого контролёра есть своя модель.
профит при исчезнавении контролёра модель исчезнет вместе с ним, к томуже неймспейс незахламлён посторонним мусором и содержит только классы.
Это неединственный подход, есть и другие которые мне нравятся неменьше.
//абстрактные классы с общим для всех контролёров функционалом
class("app.Controlller",{
//бла бла
})
// модель
class("app.Model",{
//бла бла
})
//реальные классы экземпляры которых мы будем создавать
//контролёр1
class("app.controller1",{
extend:"app.controller",
init:function(param){
//ссылка на модель
this.model1=param.model;
//экземпляр модели существующий только внутри контролёра
this.model2=app.myModel1({
});
}
//бла бла
})
//контролёр2
class("app.controller2",{
extend:"app.controller",
init:function(param){
//ссылка на модель
this.model1=param.model;
//экземпляр модели существующий только внутри контролёра
this.model2=app.myModel1({
});
}
//бла бла
})
//модель
class("app.myModel",{
extend:"app.Model"
//бла бла
})
//модель для внутреннего использования в классе контроллер 1
class("app.myModel1",{
extend:"app.Model"
//бла бла
})
//модель для внутреннего использования в классе контроллер 2
class("app.myModel2",{
extend:"app.Model"
//бла бла
})
//в этой функции инициализируется приложение
$(function(){
// общая модель для двух контролёров
var myModel= new app.myModel({
//инициализация
});
// контролёр 1
var contr1 = new app.controller1({
model: myModel
})
// контролёр 2
var contr2 = new app.controller2({
model: myModel
})
})