• EXTJS7 combobox 下拉加载数据源码


    Trigger.js

    onClick: function(e) {
    	var me = this,
    	    handler = !me.getDisabled() && me.getHandler(),
    	    field = me.getField(),
    	    focusEl;
    	...
    	// handler = 'onExpandTap' 触发combobox展开按钮点击处理函数
    	    if (handler) {
    	        Ext.callback(handler, me.getScope(), [field, me, e], null, field);
    	    }
    	}
    },
    

    Combobox.js

    // 更新store
    updateStore: function(store, oldStore) {
        var me = this,
        	// 获取combobox queryMode 默认值是remote
            isRemote = me.getQueryMode() === 'remote',
        ...
        // 如果是远端查询模式,则设置store remoteFilter=true,此项将影响store应用过滤时是否重新加载数据
        if (isRemote) {
            store.setRemoteFilter(true);
    	...
    },
    // 展开按钮点击处理函数
    onExpandTap: function() {
        var me = this,
        ...
        if (me.expanded) {
            ...
        }
        else if (!me.getReadOnly() && !me.getDisabled()) {
        	// 根据commbobox配置项triggerAction过滤数据,默认为all
            if (triggerAction === 'all') {
                me.doFilter({
                    query: me.getAllQuery(),
                    force: true // overrides the minChars test
                });
            }
            else if (triggerAction === 'last') {
                me.doFilter({
                    query: me.lastQuery.query,
                    force: true // overrides the minChars test
                });
            }
            else {
                me.doFilter({
                    query: me.inputElement.dom.value
                });
            }
        }
    }
    // 过滤下拉框数据
    doFilter: function(query) {
    	...
    	// 发送过滤器集合endupdate事件,触发store执行数据过滤
    	filters.endUpdate();
    	...        
    },
    

    AbstractStore.js

    onFilterEndUpdate: function() {
    	...
    	// 如果是远端过滤,则需要重新加载数据
    	if (me.getRemoteFilter()) {
    	   ...
    	    if (!suppressNext) {
    	    	// 加载数据
    	        me.load();
    	    }
    	}
    	...
    }
    
  • 相关阅读:
    黑马程序员——网络编程
    黑马程序员——File类
    黑马程序员——java IO流
    黑马程序员——java集合框架(Map和工具类)
    黑马程序员——java集合框架之List,Set
    黑马程序员——对线程的一些总结
    黑马程序员——创建线程的两种方式
    java对象的初始化过程
    黑马程序员——java环境变量path和classpath
    JavaScriptoo:以更好的方式选择JS库
  • 原文地址:https://www.cnblogs.com/luguojun/p/14294774.html
Copyright © 2020-2023  润新知