六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 95|回复: 0

Concrete Javascript Pattern

[复制链接]

升级  74%

9

主题

9

主题

9

主题

童生

Rank: 1

积分
37
 楼主| 发表于 2013-1-29 07:29:48 | 显示全部楼层 |阅读模式
传统的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"));            });
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表