Это MVC в JavaScript? - PullRequest
       13

Это MVC в JavaScript?

2 голосов
/ 15 января 2012

Несмотря на то, что я много раз использовал MVC в PHP, я обнаружил, что в Javascript он совершенно другой. Я читаю MVC в Javascript через Интернет, но многие из них имеют другую реализацию. Я придумал простой MVC, но я думаю, что это не правильно. Это приемлемо или совершенно неправильно?

var AppView = View.extend({

    init: function()
    {

        // listen to Model changes
        this.listen("counterChanged", $.proxy( this.updateCounter, this ));

        // assign click event; call controller method
        this.container.find("#increase").click( this.callback( this.Controller, "increase" ));
        this.container.find("#decrease").click( this.callback( this.Controller, "decrease" ));
    },


    updateCounter: function( evtData )
    {
        this.container.find("#counter").html( evtData.newValue );
    }

});

var AppController = Controller.extend({

    increase: function()
    {
        this.Model.update("counter", this.Model.get('counter') + 1 );

    },

    decrease: function()
    {
        this.Model.update("counter", this.Model.get('counter') - 1 );

    }

});


var AppModel = Model.extend({


    onUpdate_counter: function( newValue )
    {
        this.fireEvent("counterChanged",{
            newValue: newValue
        })
    }

});




var App = {}

$(document).ready(function(){

    App.Model = new AppModel({
        counter: 0
    });
    App.Controller = new AppController( App.Model );
    App.View = new AppView("#app", App.Controller );    

    App.Model.setView( App.View );

});

HTML:

<div id='app'>

    <div id='counter'>0</div>

    <a id='increase'>Increae</a>
    <a id='decrease'>Decrease</a>

</div>

Просмотр прослушивает изменения в модели и назначает события для якорей HTML. View вызывает контроллер при щелчке якорей, а затем контроллер обновляет модель.

1 Ответ

2 голосов
/ 15 января 2012

Это классический MVC типа 1979:

  • контроллер обновляет модели
  • модели обновляют представления через слушателей

PHP / Rails (веб-запрос /ответ в общем случае) - это немного другой тип MVC (ограничен типом запросов / ответов в Интернете):

  • контроллеры обновляют модели
  • контроллеры берут данные из моделей и отправляют ихк представлениям

В обоих типах просмотра событий запускаются действия контроллера.

...