zoukankan      html  css  js  c++  java
  • 30行代码实现Javascript中的MVC

    MVC的本质就是在controller中完成业务逻辑,并对model进行修改,同时model的改变引起view的自动更新

    function Model(value) {

        this._value = typeof value === 'undefined' '' : value;
        this._listeners = [];
    }
    Model.prototype.set = function (value) {
        var self = this;
        self._value = value;
        setTimeout(function () {
            self._listeners.forEach(function (listener) {
                listener.call(self, value);
            });
        });
    };
    Model.prototype.watch = function (listener) {
        this._listeners.push(listener);
    };
    Model.prototype.bind = function (node) {
        this.watch(function (value) {
            node.innerHTML = value;
        });
    };
    function Controller(callback) {
        var models = {};
        var views = Array.prototype.slice.call(document.querySelectorAll('[bind]'), 0);
        views.forEach(function (view) {
            var modelName = view.getAttribute('bind');
            (models[modelName] = models[modelName] || new Model()).bind(view);
        });
        callback.call(this, models);
    }
  • 相关阅读:
    LVM 扩容硬盘笔记
    jupyter notebook 远程访问
    samba 配置文件详解
    linux 网络挂载 windows 共享文件夹
    cmder 与 win10 wsl ( 当前目录打开wsl)
    vscode for latex
    Python 使用代理
    Python Signal(信号) 异步系统事件
    centos7 install magento
    lua笔记
  • 原文地址:https://www.cnblogs.com/sybboy/p/5197342.html
Copyright © 2011-2022 走看看