zoukankan      html  css  js  c++  java
  • list、listhorizontal、listsearch的理解

    •         var store = Ext.create('Ext.data.Store', {
                  //give the store some fields
                  fields: ['firstName', 'lastName'],
      
                  //filter the data using the firstName field
                  //过滤数据使用firstName字段,
                  sorters: 'firstName',
      
                  //autoload the data from the server
                  autoLoad: true,
      
                  //setup the grouping functionality to group by the first letter of the firstName field
                  //设置分组功能组的第一个字母firstName字段
                  grouper: {
                      groupFn: function(record) {
                          return record.get('firstName')[0];
                      }
                  },
      
                  //setup the proxy for the store to use an ajax proxy and give it a url to load
                  //the local contacts.json file
                  proxy: {
                      type: 'ajax',
                      url: 'contacts.json'
                  }
              }

      这则例子主要自动加载数据源,延后对数据源里的数据排序和整理

    • {
                  //give it an xtype of list for the list component
                  xtype: 'list',
      
                  //set the itemtpl to show the fields for the store
                  //设定每层数据的模型
                  itemTpl: '<div class="contact2"><strong>{firstName}</strong> {lastName}</div>',
      
                  //enable disclosure icons
                  //能否使用左侧的图标按钮
                  disclosure: true,
      
                  //group the list
                  //是否在头部用数据数列,也就是将所有的数据分组,在数据源时我们用的grouper在此起到了作用
                  grouped: true,
      
                  //enable the indexBar
                  //左侧添加英文字符选择组器
                  indexBar: true,
      
                  //set the function when a user taps on a disclsoure icon
                  //添加对组的事件点击触发,  e.stopEvent();函数主要防止冒泡事件上的传递
                  onItemDisclosure: function(record, item, index, e) {
                      //show a messagebox alert which shows the persons firstName
                      e.stopEvent();
                      Ext.Msg.alert('Disclose', 'Disclose more info for ' + record.get('firstName'));
                  },
      
                  //bind the store to this list
                  store: store
              };
        Ext.data.JsonP.request({
                  url: url,
                  callbackName: 'feedCb',
      
                  success: function(data) {
                      Ext.Array.each(data.proposals, function(proposal) {
                          Ext.Array.each(proposal.speakers, function(speaker) {
                              // don't add duplicates or items with no photos.
                              if (speakerIds.indexOf(speaker.id) == -1 && speaker.photo) {
                                  speakerIds.push(speaker.id);
      
                                  speakerModel = Ext.create('Oreilly.model.Speaker', speaker);
                                  speakerStore.add(speakerModel);
                              }
                          });
                      });
                  }
              });

      这是一个简单的jsonp请求,jsonp请求主要运用与跨域请求,请求的数据中包含协定好的字符返回格式:Ext.data.JsonP.feedCb(),主要有callbackName定义

    •     {
                          //give it an xtype of list for the list component
                          xtype: 'dataview',
      
                          height: 205,
                          //设置数据水平滚动
                          scrollable: 'horizontal',
                          //inline设置内联,如果没有设置inline所有的元素会聚集在一起,如果设置了,所有的数据元素将水平平铺,如果wrap设置为false,所有的元素可以左右拉动
                          inline: {
                              wrap: false
                          },
      
                          //set the itemtpl to show the fields for the store
                          itemTpl: '<img src="{photo}"><div>{first_name} {last_name}</div>',
      
                          //bind the store to this list
                          store: store
                      }
      {
                  //give it an xtype of list
                  xtype: 'list',
                  //设置边框外形
                  ui: 'round',
                  //设置头部分组名称是否固定
                  pinHeaders: false,
      
                  //itemTpl defines the template for each item in the list
                  itemTpl: '<div class="contact">{firstName} <strong>{lastName}</strong></div>',
      
                  //give it a link to the store instance
                  store: this.getStore(),
                  grouped: true,
                  //数据为空时的显示
                  emptyText: '<div style="margin-top: 20px; text-align: center">No Matching Items</div>',
                  //数据选项是否可以被选择
                  disableSelection: false,
      
                  items: [
                      {
                          xtype: 'toolbar',
                          docked: 'top',
      
                          items: [
                              { xtype: 'spacer' },
                              {
                                  xtype: 'searchfield',
                                  placeHolder: 'Search...',
                                  listeners: {
                                      scope: this,
                                      //搜索按钮右侧清空按钮事件的绑定
                                      clearicontap: this.onSearchClearIconTap,
                                      //监听键盘数据事件
                                      keyup: this.onSearchKeyUp
                                  }
                              },
                              { xtype: 'spacer' }
                          ]
                      }
                  ]
              };
      function(field) {
              //get the store and the value of the field
              var value = field.getValue(),
                  store = this.getStore();
      
              //first clear any current filters on thes tore
              store.clearFilter();
      
              //check if a value is set first, as if it isnt we dont have to do anything
              if (value) {
                  //the user could have entered spaces, so we must split them so we can loop through them all
                  var searches = value.split(' '),
                      regexps = [],
                      i;
      
                  //loop them all
                  for (i = 0; i < searches.length; i++) {
                      //if it is nothing, continue
                      if (!searches[i]) continue;
      
                      //if found, create a new regular expression which is case insenstive
                      regexps.push(new RegExp(searches[i], 'i'));
                  }
      
                  //now filter the store by passing a method
                  //the passed method will be called for each record in the store
                  store.filter(function(record) {
                      var matched = [];
      
                      //loop through each of the regular expressions
                      for (i = 0; i < regexps.length; i++) {
                          var search = regexps[i],
                              didMatch = record.get('firstName').match(search) || record.get('lastName').match(search);
      
                          //if it matched the first or last name, push it into the matches array
                          matched.push(didMatch);
                      }
      
                      //if nothing was found, return false (dont so in the store)
                      if (regexps.length > 1 && matched.indexOf(false) != -1) {
                          return false;
                      } else {
                          //else true true (show in the store)
                          return matched[0];
                      }
                  });
              }
          },

      sencha官方的有关数据源和输入的寻找和匹配方法

    •    onSearchClearIconTap: function() {
              //call the clearFilter method on the store instance
              this.getStore().clearFilter();
          }

      清空store中查找匹配的数据源

  • 相关阅读:
    Postman初探
    web页面和本地数据对比问题
    Katalon Recorder初探
    Flask入门
    自我实现预言
    gulp 安装 依赖
    maven环境
    加解密 生成 X.509格式,DER编码,后缀名.cer。加密公钥证书
    我的魔法 公式找回中
    gulp 自动ftp至服务器时,处理开发 测试服务器地址问题
  • 原文地址:https://www.cnblogs.com/qingkong/p/2879915.html
Copyright © 2011-2022 走看看