七段

          無(wú)論怎樣,請(qǐng)讓我先感謝一下國(guó)家。

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            35 Posts :: 2 Stories :: 7 Comments :: 0 Trackbacks
          傳統(tǒng)的client side js MVC 結(jié)構(gòu):
          Model:
          json object - mapping with PO from server side
          View:
          HTML + CSS
          Controller:
          Page object - 負(fù)責(zé)頁(yè)面初始化邏輯(驗(yàn)證、事件綁定、json數(shù)據(jù)渲染到DOM),提交時(shí),獲取DOM的數(shù)據(jù)組裝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相比,框架的好處是可以批量添加。

          用例:
          對(duì)于autocomplete組件,formatted data = data name; saved data= data id;
          之前有一個(gè)實(shí)現(xiàn)是為了save data id,多加了一個(gè) input hidden.
          如果是concrete js pattern, 可以在這個(gè)input element 上直接保存數(shù)據(jù)。
          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"));
                      });
          



          已有 0 人發(fā)表留言,猛擊->>這里<<-參與討論


          JavaEye推薦




          文章來(lái)源:http://sevenduan.javaeye.com/blog/503946
          posted on 2009-10-31 14:49 sevenduan 閱讀(132) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 通化市| 彭阳县| 方山县| 萨迦县| 安平县| 峨山| 达尔| 云龙县| 东台市| 铜梁县| 泰安市| 松潘县| 阿克苏市| 大余县| 湾仔区| 正镶白旗| 华池县| 宕昌县| 嘉义县| 额敏县| 张家口市| 中西区| 禄丰县| 咸宁市| 新郑市| 庆元县| 张家口市| 莎车县| 禹城市| 克山县| 中宁县| 南丰县| 长汀县| 大庆市| 阳朔县| 盖州市| 池州市| 天柱县| 库尔勒市| 甘孜县| 米林县|