`
sevenduan
  • 浏览: 12663 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Concrete Javascript Pattern

阅读更多
传统的client side js MVC 结构:
Model:
json object - mapping with PO from server side
View:
HTML + CSS
Controller:
Page object - 负责页面初始化逻辑(验证、事件绑定、json数据渲染到DOM),提交时,获取DOM的数据组装json。

Concrete Javascript Pattern :
把status 和 behavior 直接绑定到DOM element上。

jquery concrete framework:
http://github.com/hafriedlander/jquery.concrete
http://github.com/nkallen/effen/
前者42k,后者0.8k。
与直接在DOM element object上添加status or behavior相比,框架的好处是可以批量添加。

用例:
对于autocomplete组件,formatted data = data name; saved data= data id;
之前有一个实现是为了save data id,多加了一个 input hidden.
如果是concrete js pattern, 可以在这个input element 上直接保存数据。
effen + jquery.autocomplete test:
$('body').append('<div id="dom_test"><input id="month"/></div>');
            var monthInput = $("#month");
            monthInput.fn({
                dataPair: function(){
                    if (arguments.length == 0) {
                        return this._data;
                    }
                    else {
                        this._data = arguments[0];
                    }
                },
                _data: []
            });
            monthInput.autocomplete(months, {
                minChars: 0,
                max: 12,
                autoFill: true,
                mustMatch: true,
                matchContains: false,
                scrollHeight: 220,
                formatItem: function(data, i, total){
                    if (data[0] == months[new Date().getMonth()]) 
                        return false;
                    return data[0].substring(0, 3);
                },
                formatResult: function(row){
                    return row[1];
                }
            });
            monthInput.result(function(event, data, formatted){
                var _data = data[0].split("|");
                monthInput.fn("dataPair", _data);
                console.dir(monthInput.fn("dataPair"));
            });

分享到:
评论

相关推荐

    statepattern-JAVASCRIPT

    状态模式(State Pattern)是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。在JavaScript中,状态模式同样适用,并且由于JavaScript的灵活性,实现起来相对简单。 状态...

    JavaScript设计模型Iterator实例解析

    这篇文章主要介绍了JavaScript设计模型Iterator实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Iterator Pattern是一个很重要也很简单的Pattern:迭代...

    JavaScript设计模式之装饰者模式定义与应用示例

    装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许用户在不修改现有对象的结构的前提下,给对象动态地添加额外的职责或行为。接下来,我们将详细介绍装饰者模式的定义、原理、应用方法及示例。 首先,...

    Reactive Design Patterns

    Segregation data pattern., Reactive Design Patterns is a clearly-written guide for building event-driven distributed systems that are resilient, responsive, and scalable. In it, you'll find patterns ...

    观察者(Observer)模式详解

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动编程或者...

    java面试宝典

    194、In a architecture pattern like MVC, it is mandatory that Servlet should be the controller, why not JSP? 46 195、Why JSP is used as View part of MVC ? 46 196、Can a database connection pool be ...

    python3.6.5参考手册 chm

    The json module: JavaScript Object Notation The plistlib module: A Property-List Parser ctypes Enhancements Improved SSL Support Deprecations and Removals Build and C API Changes Port-Specific ...

Global site tag (gtag.js) - Google Analytics