你会如何在Javascript中实现Controller? (自制MVC内)

时间:2012-07-17 17:27:44

标签: javascript model-view-controller

我想在JavaScript中实现MVC模式,但我在控制器实现方面存在问题。

MVC概念对我来说很清楚。我理解MVC是如何工作的。我不认为这些事件是构建Controller的合适方式。由于JavaScript中的事件版本,因此存在很多依赖性。 我想在JavaScript中看到一些MVC Controller实现的小例子。

p.s。我想通过仅使用JavaScript来实现MVC模式,但我不想使用任何MVC开源框架。

p.s。我不希望你做我的作业,但我真的不明白如何在JavaScript中使用imprelent控制器。

1 个答案:

答案 0 :(得分:1)

基本上MVC基于观察者模式(和控制器也是)

如何在Javascript中实现Observer?

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

希望这可以帮助你..