Javascript Mvc学习杂记3

简介:

接着上次说,这次准备在Model类里面,增加本地存储功能,用的是html5中的localStorage,这样方便,页面刷新的时候,自动加载已经添加的数据,下面是静态页的代码。


<!DOCTYPE HTML>
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <script src="jquery-1.8.3.js" type="text/javascript"></script>
  <script type="text/javascript" >
     //基于原型的继承
if(typeof Object.create!=="function"){
   Object.create=function(o){
      function F(){}
      F.prototype=o;
      return new F();
   }
}
var Model={
   prototype:{
      init:function(){
        console.log('Model.prototype.init');
      },
      find:function(){
        console.log('Model.prototype.find');
      }
   },
   inherited:function(){
      //console.log('exec inherited')
   },
   created:function(){
      //console.log('exec created!');
   },
   create:function(){
      var object=Object.create(this);
      object.parent=this;
      object.prototype=object.fn=Object.create(this.prototype);

      object.created();//创建完成方法

      this.inherited(object); //继承父类属性方法

      return object;
   },
   init:function(){
      var instance=Object.create(this.prototype);
      instance.parent=this;
      instance.init.apply(instance,arguments);
      return instance;
   },
   extend:function(o){
      for(var key in o){
        this[key]=o[key];
      }
   },
   include:function(o){
      for(var key in o){
         this.prototype[key]=o[key];
      }
   }
};
//类方法
Model.extend({
   records:{},
   initattr:function(o){
      var obj=this.init();
      for(var key in o){
        obj[key]=o[key];
      }
      return obj;
   },
   find:function(id){
      return this.records[id];
   }
});
Model.include({
   save:function(){
      this.parent.records[this.id]=this;
   }
});
var User=Model.create();
//类实例方法
User.include({
   getname:function(){
      console.log(this.name);
   },
   attributes:function(){
      var result={};
      for(var i in this.parent.attributes){
         var attr=this.parent.attributes[i];
         result[attr]=this[attr];
      }
      return result;
   }
});
User.extend({
  attributes:["name","age","id"],
  //保存本地数据
  savelocal:function(){
     var result=[];
     for(var i in this.records){
        var record=this.records[i].attributes();
        result.push(record);
     }
     localStorage.setItem("Users",JSON.stringify(result));
  },
  //加载本地数据
  loadlocal:function(){
     if (localStorage.getItem("Users")){
         alert(localStorage.getItem("Users"));
         var result=JSON.parse(localStorage.getItem("Users"));
         var html=[];
         for(var i in result){
           html.push("<tr>");
           for(var key in this.attributes){
              var attr=this.attributes[key];
              html.push("<td>");
              html.push(result[i][attr]);
              html.push("</td>");
           }
           html.push("</tr>");
         }
         $("#tabinfo tbody").append(html.join(''));
     }
  }
});
$(function(){
    $(window).bind("beforeunload",function(){
       User.savelocal();//页面关闭的时候保存数据
    });
    $("#butadd").click(function(){
       var name=$("#txtname").val();
       var id=$("#txtid").val();
       var age=$("#txtage").val();
       var user=User.initattr({"name":name,"age":age,"id":id});
       user.save();
       var html=[];
       html.push("<tr>");
       for(var key in User.attributes){
              var attr=User.attributes[key];
              html.push("<td>");
              html.push(user[attr]);
              html.push("</td>");
       }
      html.push("</tr>");
      console.log(user);
      $("#tabinfo tbody").append(html.join(''));
    });
    //初始化的时候从本地数据里加载内容
    User.loadlocal();
});
  </script>
 </head>

 <body>
    <p>
      编号:<input type="textbox" id="txtid" style="margin:5px;padding:5px;width:200px;" />
      姓名:<input type="textbox" id="txtname" style="margin:5px;padding:5px;width:200px;" />
      年龄:<input type="textbox" id="txtage" style="margin:5px;padding:5px;width:200px;" />
      <input type="button" id="butadd" style="margin:5px;padding:5px;width:200px;" value="添加" />
    </p>
    <p>
      <table style="border:1px solid green" id="tabinfo">
         <thead>
            <th>编号</th>
            <th>姓名</th>
            <th>年龄</th>
         </thead>
         <tbody>

         </tbody>
      </table>
    </p>
 </body>
</html>

将上面的文件保存为index.html,然后可以在支持html5的浏览器里运行,比如chrome,ff等。还有一个jquery1.8.3的js库,此处可以换成jquery的CDN,这是官方提供的CDN地址http://code.jquery.com/jquery-1.8.3.min.js

好了,今天就写到这了,下次continue :)


目录
相关文章
|
3月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
30 0
|
3月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
81 0
|
8天前
|
存储 移动开发 JavaScript
学习javascript,前端知识精讲,助力你轻松掌握
学习javascript,前端知识精讲,助力你轻松掌握
|
13天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
15天前
|
JavaScript 前端开发 测试技术
学习JavaScript
【4月更文挑战第23天】学习JavaScript
13 1
|
22天前
|
JavaScript 前端开发 应用服务中间件
node.js之第一天学习
node.js之第一天学习
|
2月前
|
运维 JavaScript 前端开发
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
|
2月前
|
JavaScript
Vue.js学习详细课程系列--共32节(6 / 6)
Vue.js学习详细课程系列--共32节(6 / 6)
28 0
|
2月前
|
JavaScript
Vue.js学习详细课程系列--共32节(5 / 6)
Vue.js学习详细课程系列--共32节(5 / 6)
30 0
|
2月前
|
JavaScript
Vue.js学习详细课程系列--共32节(4 / 6)
Vue.js学习详细课程系列--共32节(4 / 6)
35 0