2012-07-17 1 views
-1

Я хочу реализовать шаблон MVC в JavaScript, но у меня проблема с реализацией Controller.Как реализовать контроллер в Javascript? (внутри самодельного MVC)

Концепции MVC понятны для меня. Я понимаю, как работает MVC. Я не думаю, что события подходят для сборки контроллера. И есть много зависимостей из-за выпуска события в JavaScript. Я хотел бы увидеть небольшой пример реализации MVC-контроллера в JavaScript.

p.s. Я хочу реализовать шаблон MVC, используя только JavaScript, но я не хочу использовать какие-либо MVC-среды с открытым исходным кодом.

p.s. Я не хочу, чтобы вы делали домашнее задание, но я действительно не понимаю, как неуправляемый контроллер в JavaScript.

+1

ли не контроллеры а ** сервер ** концепция? Вы можете сделать это в Node.JS на сервере и остаться с Javascript, но контроллеры в браузере не имеют большого смысла. –

+0

Как вы можете видеть - вот она говорит о Javascript. И я думаю, что речь идет о клиентском Javascript. Так что дело не в сервере –

+2

Возможно, вы можете посмотреть, как это делают существующие фреймворки. – JJJ

ответ

1

поясню MVC основана APON паттерна наблюдатель (и контроллер также)

Как вы можете реализовать Observer внутри JavaScript?

function Observer() { 
    var subscribers = []; 
    return { 
     subscribe: function(eventName, object) { 
      subscribers.push({ event: eventName, target: object }); 
     }, 
     unsubscribe: function(object) { 
      var indexToDelete = subscribers.indexOf(object); 
      subscribers.splice(indexToDelete, 1); 
     }, 
     trigger: function(eventName, p1, p2, p3, p4, p5) { 
      for (var i = 0; i < subscribers.lenght; i++) { 
       if (subscribers[i].event == eventName) { 
        //target object must implement this function 
        subscribers[i].target[eventName](p1, p2, p3, p4, p5); 
       } 
      } 
     } 
    } 
} 

И как вы можете его использовать?

var model = { 
    fireChangesInsideOfModel: function(p1){ 
     //do some model update logic here 
    } 
} 
var controller = Observer(); 
    controller.subscribe("fireChangesInsideOfModel", model); 

controller.trigger("fireChangesInsideOfModel", 11231); // 11231 - is an example of a parameter 

Надеется, что это помогает ..

Смежные вопросы