自己构建MVC中的M

/**
 * @ description Model MVC中M 数据模型
 * @ Object
 * @ public
 * @ create method IE不支持
 */

if(typeof Object.create !== ‘fnction‘){
    Object.create = function(o){
        function F(){}
        F.prototype = o;
        return new F()
    }
}

Math.guid = function(){
    return ‘xxxxxxxx-xxxx-4yxx-xxxxxxxxxxxx‘.replace(/[xy]/g,function(c){
        var v = Math.random()*16|0,
            c = c == ‘x‘ ? v : (v & 0x8),
            c = c.toString(16);
        return c.toUpperCase()
    })
}

var Model = {
    created : function(){

    },

    prototype : {
        init: function(){
            console.log(‘prototype.init‘)
        }
    },

    extend : function(o){
        for(var i in o){
            this[i] = o[i]
        }
    },

    include : function(o){
        for(var i in o){
            this.prototype[i] = o[i]
        }
    },

    create : function(){
        var object = Object.create(this);//object 继承 Model
        object.parent = this;
        object.prototype = object.fn = Object.create(this.prototype) // object.prototype 继承 Model.prototype
        object.created();
        return object
    },

    init : function(){
        var instance = Object.create(this.prototype);
        instance.parent = this;
        instance.init.apply(instance,arguments);
        return instance;
    }
}

/*
    *Object 存储实例对象
 */

Model.records = {};

var Asset = Model.create();

Model.include({
    init : function(attr){
        if(attr){
            this.load(attr)
        }
    },
    load : function(attr){
        for(var i in attr){
            this[i] = attr[i]
        }
    }
})

Model.include({
    newRecords : true,

    create : function(){
        this.newRecords = false;
        this.id = this.id || Math.guid();
        this.parent.records[this.id] = this.dup();
    },

    destroy : function(){
        delete this.parent.records[this.id]
    },

    updata : function(){
        this.parent.records[this.id] = this.dup();
    },

    save : function(){
        this.newRecords ? this.create() : this.updata()
    },

    dup : function(){
        var o = {};
        for(var i in this){
            o[i] = this[i]
        }
        return o;
    } 

})

Model.extend({
    find : function(id){
        var record = this.records[id]
        if(!record) throw(‘no you need object‘)
        return record.dup()
    },

    created : function(){
        this.record = {}
    }
})

Model.extend({
    populate : function(values){
        this.records = {};
        for(var i = 0, len = values.length; i < len; i++){
            var record = this.init(values[i]);
            record.newRecords = false;
            record.id = record.id || Math.guid();
            this.records[record.id] = record;
        }
    }
})

var asset = Asset.init({name : ‘xiaohui108‘})
时间: 2024-10-07 05:06:43

自己构建MVC中的M的相关文章

在ASP.NET Core MVC中构建简单 Web Api

Getting Started 在 ASP.NET Core MVC 框架中,ASP.NET 团队为我们提供了一整套的用于构建一个 Web 中的各种部分所需的套件,那么有些时候我们只需要做一个简单的 Web Api 程序怎么办呢? 在 GitHub 中的 ASP.NET Core MVC 源码里面,我们只要关注 Microsoft.AspNetCore.Mvc 这个包,那么除了这个包之外它还包含这些: Microsoft.AspNetCore.Mvc.ApiExplorer Microsoft.

《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例

翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章  ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架,它支持3种不同的技术来创建websites(网站)和Web应用:他们分别是,Web Pages,Web Forms,和MVC.虽然MVC是一种非常流行的,有完整的用于软件开发模式理论的技术,但它在ASP.NET中却是一种新的技术. 目前最新的版本是2012年发布的ASP.NET MVC4.自从2008年发布

MVC中利用ActionFilterAttribute过滤关键字

在开发过程中,有时候会对用户输入进行过滤,以便保证平台的安全性.屏蔽的方法有很多种,但是今天我说的这种主要是利用MVC中的ActionFilterAttribute属性来实现.由于MVC天然支持AOP,所以我们这种过滤方式正好利用了MVC的这种特性. 下面请看步骤: 首先,当用户输入自己的名称的时候,带有类似<BR>的内容的时候,由于MVC默认是需要验证内容的,所以,会抛出一张黄页错误,提示用户:从客户端检测到潜在风险的Request值.这种页面是极为不友好的,同时也是我们作为开发最不想见到的

Spring MVC中基于注解的 Controller

终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响应请求.实际上,ControllerClassNameHandlerMapping, MultiActionController 和选择恰当的 methodNameResolver(如 InternalPathMethodNameResolver) 就已经可以在很大程度上帮助我们省去不少的 XML 配置,谁让

NPOI以及在ASP.NET MVC中的使用

NPOI以及在ASP.NET MVC中的使用 1.前言 相信大家在工作中经常要遇到一些导入导出Execl操作.学习贵在分享,分享使人快乐,园子里的前辈已经有很多好的文章,鄙人也是能力有限,在这里把这些好的文章总结,方便以后再工作中使用. NPOI:是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作. 它不使用Off

angular.js的路由和模板在asp.net mvc 中的使用

我们知道angular.js是基于mvc 的一款优秀js框架,它也有一套自己的路由机制,和asp.net mvc 路由不太一样.asp.net mvc 的路由是通过不同的URL到不同的controller然后交给controller去呈现视图.但是在angular.js则是需要提前指定一个module(ng-app),然后去定义路由规则,通过不同的URL,来告诉ng-app 去加载哪个页面.再渲染到ng-view.通过angular.js路由的使用,可以很容易实现页面的局部刷新.更加高效的去创建

.net MVC中Jquery实现AJAX详解

声明 这是我一边学,一边写的: 好处是:我从新手的角度出发,谈自己的理解,每一步的操作也都是按照新手入门来做,有截图. 坏处是:部分地方可能说的不到位或错误.不过作为新手,我觉得能先帮你理解着实现功能貌似更重要. 开始: 0 前言: Ajax本质是一个web数据请求的手段,既然是请求,也就是有请,有求.也就是客户端(html页面)向服务器发送请求获得数据的手段. 世间万物万变不离其宗,抓住事物本质就能让我们拨云见日: 一.在服务器端写好方法 二.在客户端写好请求 当然在这之前我们还需要有个web

MVC中Controller与View之间数据互传

转自:http://blog.csdn.net/sknice/article/details/42323791 在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一.Controller向View传递数据 1.使用ViewData传递数据 在Controller中定义如下: ViewData[“Message_ViewData”] = “ Hello ViewData!”; 在Vie

如何在 ASP.NET MVC 中集成 AngularJS(2)

在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中集成 AngularJS 的第二部分. ASP.NET 捆绑和压缩 CSS 和 JavaScript 的捆绑与压缩功能是 ASP.NET MVC 最流行和有效的特性之一.捆绑和压缩降低了 HTTP 请求和有效载荷的大小,结果是可以更快和更好的执行 ASP.NET MVC 的网站.有许多可以减少 CS