• MVC


    <!DOCTYPE html>
    <html>
    <head>
      <meta charset=utf-8>
      <script src="../lib/jquery.js" type="text/javascript" charset="utf-8"></script>
      
      <script type="text/javascript" charset="utf-8">
        (function($, exports){
          var mod = {};
          
          mod.create = function(includes){
            var result = function(){
              this.initializer.apply(this, arguments);
              this.init.apply(this, arguments);
            };
                    
            result.fn = result.prototype;
            result.fn.init = function(){};
            
            result.proxy    = function(func){ return $.proxy(func, this); };
            result.fn.proxy = result.proxy;
    
            result.include = function(ob){ $.extend(this.fn, ob); }; 
            result.extend  = function(ob){ $.extend(this, ob); };
            
            result.include({
              initializer: function(options){
                this.options = options;
                
                for (var key in this.options)
                  this[key] = this.options[key];
    
                if (this.events) this.delegateEvents();
                if (this.elements) this.refreshElements();
              },
              
              $: function(selector){
                return $(selector, this.el);
              },
    
              refreshElements: function(){
                for (var key in this.elements) {
                  this[this.elements[key]] = this.$(key);
                }
              },
    
              eventSplitter: /^(w+)s*(.*)$/,
    
              delegateEvents: function(){
                for (var key in this.events) {
                  var methodName = this.events[key];
                  var method     = this.proxy(this[methodName]);
    
                  var match      = key.match(this.eventSplitter);
                  var eventName  = match[1], selector = match[2];
    
                  if (selector === '') {
                    this.el.bind(eventName, method);
                  } else {
                    this.el.delegate(selector, eventName, method);
                  }
                }
              }
            });
            
            if (includes) result.include(includes);
            
            return result;
          };
          
          exports.Controller = mod;
        })(jQuery, window);
        
        var exports = this;
        
        jQuery(function($){
          exports.SearchView = Controller.create({
            elements: {
              "input[type=search]": "searchInput",
              "form": "searchForm"
            },
            
            events: {
              "submit form": "search"
            },
            
            init: function(){ /* ... */ },
            
            search: function(){
              alert("Searching: " + this.searchInput.val());
              return false;
            },
          });
          
          new SearchView({el: $("#users")});
        });
      </script>
    </head>
    <body>
      <div id="users">
        <form>
          <input type="search" value="" placeholder="Enter a query">
          <button>Search</button>
        </form>
      </div>
    </body>
  • 相关阅读:
    IDEA创建test测试类
    SpringBoot Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration
    Mysql在线加索引锁表归纳
    工作感悟--对上一份工作总结
    ESP8266获取网络NTP时间(转)
    Python中的CGI编程 config配置(windows、Apache) 以及后期的编写(转)
    CGI与FastCGI(转)
    JSON-RPC轻量级远程调用协议介绍及使用
    java插件化编程(动态加载)
    PF4J入门指南
  • 原文地址:https://www.cnblogs.com/human/p/3479067.html
Copyright © 2020-2023  润新知