zoukankan      html  css  js  c++  java
  • navigationview的理解

    •   xtype: 'mainview',
      
          config: {
              //如果设置为自动销毁,那么原来绑定的事件会消失,不会重新绑定
              autoDestroy: false,
      
              navigationBar: {
                  ui: 'sencha',
                  items: [
                      {
                          xtype: 'button',
                          id: 'editButton',
                          text: 'Edit',
                          //控制按钮在最右侧
                          align: 'right',
                          hidden: true,
                          //在android上按钮消失的官方方法
                          hideAnimation: Ext.os.is.Android ? false : {
                              type: 'fadeOut',
                              duration: 200
                          },
                           //在android上按钮出现的官方方法
                          showAnimation: Ext.os.is.Android ? false : {
                              type: 'fadeIn',
                              duration: 200
                          }
                      },
      //这是一个很常用的sencha的mvc用法
      Ext.define('AddressBook.controller.Application', {
          extend: 'Ext.app.Controller',
      
          config: {
           //定义别名替代引用,就是用一个字符串替代应用程序上控件的名字
              refs: {
                  //xtype引用,就是使用xtype寻找,导航面板用main代替
                  main: 'mainview',
                   //id引用,就是使用id寻找
                  editButton: '#editButton',
                  contacts: 'contacts',
                  showContact: 'contact-show',
                  editContact: 'contact-edit',
                  saveButton: '#saveButton'
              },
      
              control: {
                 //事件绑定,,对导航面板的push和pop触发时的引用
                  main: {
                      push: 'onMainPush',
                      pop: 'onMainPop'
                  },
                  editButton: {
                      tap: 'onContactEdit'
                  },
                 //list列表选项事件绑定
                  contacts: {
                      itemtap: 'onContactSelect'
                  },
                  saveButton: {
                      tap: 'onContactSave'
                  },
                  //文本框改变事绑定
                  editContact: {
                      change: 'onContactChange'
                  }
              }
          },
      
          onMainPush: function(view, item) {
              var editButton = this.getEditButton();
      
              if (item.xtype == "contact-show") {
                  this.getContacts().deselectAll();
      
                  this.showEditButton();
              } else {
                  this.hideEditButton();
              }
          },
      
          onMainPop: function(view, item) {
              if (item.xtype == "contact-edit") {
                  this.showEditButton();
              } else {
                  this.hideEditButton();
              }
          },
      
          onContactSelect: function(list, index, node, record) {
              var editButton = this.getEditButton();
              //实例化展示面板,然后加入导航面板中
              if (!this.showContact) {
                  this.showContact = Ext.create('AddressBook.view.contact.Show');
              }
      
              // Bind the record onto the show contact view
              this.showContact.setRecord(record);
      
              // Push the show contact view into the navigation view
              //导入导航面板中的方法
              this.getMain().push(this.showContact);
          },
      
          onContactEdit: function() {
              if (!this.editContact) {
                  this.editContact = Ext.create('AddressBook.view.contact.Edit');
              }
      
              // Bind the record onto the edit contact view
              this.editContact.setRecord(this.getShowContact().getRecord());
      
              this.getMain().push(this.editContact);
          },
      
          onContactChange: function() {
              this.showSaveButton();
          },
      
          onContactSave: function() {
              var record = this.getEditContact().saveRecord();
      
              this.getShowContact().updateRecord(record);
              //导航面板中返回上层的方法
              this.getMain().pop();
          },
      
          showEditButton: function() {
              //组件在控制器中寻找的方法,用get+大写字母开头的替代名
              var editButton = this.getEditButton();
      
              if (!editButton.isHidden()) {
                  return;
              }
      
              this.hideSaveButton();
      
              editButton.show();
          },
      
          hideEditButton: function() {
              var editButton = this.getEditButton();
      
              if (editButton.isHidden()) {
                  return;
              }
      
              editButton.hide();
          },
      
          showSaveButton: function() {
              var saveButton = this.getSaveButton();
      
              if (!saveButton.isHidden()) {
                  return;
              }
      
              saveButton.show();
          },
      
          hideSaveButton: function() {
              var saveButton = this.getSaveButton();
      
              if (saveButton.isHidden()) {
                  return;
              }
      
              saveButton.hide();
          }
      });
    •  //listeners一般在config中,一般处理事件的监听和绑定,
      //这则例子是对'textfield'的委托,'onKeyUp'的监听和绑定
       listeners: {
                  delegate: 'textfield',
                  keyup: 'onKeyUp'
              },
      //还有例外一种写法
       {
                      fn: 'onKeyUp',
                      event: 'keyup',
                      delegate: 'textfield'
                  },
       //一般所有的组件中都有fireEvent这个方法,方便立即触发所有的事件监听
      onKeyUp: function() {
              this.fireEvent('change', this);
          }
  • 相关阅读:
    图论4-floyd
    。。。
    [LOJ10164]数字游戏
    KMP模板
    无向图割点模板
    tarjan有向图模板
    LCA倍增模板
    P2149 [SDOI2009]Elaxia的路线
    树的直径dp模板
    [暑假集训]Day4 T3 平板涂色
  • 原文地址:https://www.cnblogs.com/qingkong/p/2880421.html
Copyright © 2011-2022 走看看