精华内容
下载资源
问答
  • 360下拉词电脑端优化推广是怎么做的呢? 大家都知道360的产品线比较广泛哈,上至浏览器、搜索引擎;下至杀毒软件、防护软件等。 然后基本每个产品都会带有360搜索功能,特别是360浏览器跟360杀毒软件,基本是每台...

    360下拉词电脑端优化推广是怎么做的呢?

    大家都知道360的产品线比较广泛哈,上至浏览器、搜索引擎;下至杀毒软件、防护软件等。
    然后基本每个产品都会带有360搜索功能,特别是360浏览器跟360杀毒软件,基本是每台电脑上都会有安装并使用的,所以说用户量是很大的。

    特别是360搜索引擎,在国内也是数一数二的,所以我们要会使用搜索引擎去更好的推广自己的公司、品牌、产品。

    回归主题,360下拉词电脑端优化推广是怎么做的呢?

    首先我们要了解下360搜索下拉框中的下拉词是怎么出现的呢?先来一起看下图:
    360热点榜单
    那么可以看到搜索引擎对每个搜索词都会数据统计,并且是短时间内实时更新的,很厉害吧。

    接着我们再以“小伙设计稻穗状烟花”这个词语来判断验证,在360搜索框中输入文字“小伙设计”

    我们就会在下拉框中看到“小伙设计稻穗状烟花”这个下拉词,如图:
    360搜索下拉词框
    所以,看到这里,相信大家都知道360下拉词电脑端优化推广是怎么做的了吧!?

    展开全文
  • 对题库通用下拉菜单

    2021-04-05 05:50:23
    作者arcangelw,源码DTKDropdownMenu,对题库通用下拉菜单,公司项目中通用下拉菜单集成,参考了KTDropdownMenuView,在理清思路和需求后完成了DTKDropdownMenu,感谢 @tujinqiu 因为产品需求(你懂的),很多无用...
  • 问题背景 由于我们公司做移动端用的是...很不符合移动端的操作,因此需要优化,自己动手写了一个下拉刷新的但是不好用,而且bug多,因此找了很长时间才发现了dropload这个框架,比较的容易上手,简单,但是文档写...

    问题背景

    由于我们公司做移动端用的是混合开发,适应ios和安卓,pc,微信等,但是分页这块一直没做好,做的不是太好(毕竟都是java程序员对前端这块不是很熟,硬是头皮上的你懂得),但是分页就是用常规的web端的上下页按钮来实现的,很不符合移动端的操作,因此需要优化,自己动手写了一个下拉刷新的但是不好用,而且bug多,因此找了很长时间才发现了dropload这个框架,比较的容易上手,简单,但是文档写的不是很详细,许多要用的东西没介绍需要自己去看源码!做了好久才有点效果,经过不断地改进优化基本上没啥问题了。现在我就这次的问题做一个简单的前后代代码展示

    前端

    前端采用vue,分页用dropload

    <script src="dropload/dropload.min.js"></script>
    <script>
    
        $(function () {
    
            var re =null;
            // 页数
            var page = 1;
            // 每页展示5个
            var size = 5;
            var pageCount = 0;
            // dropload
            var dropload = $('#reg').dropload({
                // scrollArea: window,
                domUp: {
                    domClass: 'dropload-up',
                    domRefresh: '<div class="dropload-refresh">↓下拉刷新</div>',
                    domUpdate: '<div class="dropload-update">↑释放更新</div>',
                    domLoad: '<div class="dropload-load"><span class="loading"></span>加载中...</div>'
                },
                domDown: {
                    domClass: 'dropload-down',
                    domRefresh: '<div class="dropload-refresh">↑上拉加载更多</div>',
                    domLoad: '<div class="dropload-load"><span class="loading"></span>加载中...</div>',
                    domNoData: '<div class="dropload-noData">暂无数据</div>'
                },
    
    
                loadUpFn: function (me) {
                    page++;
                    $.ajax({
                        type: 'POST',
                        url: '/jtdj/service/meeting/MTRest?serviceName=PartyBuilding&methodName=queryPartyBulidingToApp&submission=DispatchAction&Existing=1',
                        dataType: 'json',
                        data: {
                            "loginName": loginName,
                            "roleCode": roleCode,
                            "currpage": page,
                        },
                        contentType: "application/x-www-form-urlencoded; charset=utf-8",//x-www-form-urlencoded
                        beforeSend: function (XMLHttpRequest) {
                        },
                        success: function (result) {
                            if (page < pageCount){
                                re = result.party.rows;
                                console.log("data is => " +re);
                                for (var i = 0; i < re.length; i++) {
                                    vm.list1.unshift(re[i]);
                                }
    
                                console.log("list1 is " + vm.list1);
                                // vm.list1 = result.party.rows;
                                vm.currpage = result.currpage.rows[0];
                                vm.count = result.count.rows[0];
                                dropload.resetload();
                            }else {
                                // 锁定
                                me.lock();
                                // 无数据
                                me.noData();
                            }
    
                        },
                        error: function (xhr, type) {
                            alert('Ajax error!');
                            // 即使加载出错,也得重置
                            dropload.resetload();
                        }
                    });
                },
    
    
                /*loadDownFn: function (me) {
                    page++;
                    $.ajax({
                        type: 'POST',
                        url: '/jtdj/service/meeting/MTRest?serviceName=PartyBuilding&methodName=queryPartyBulidingToApp&submission=DispatchAction&Existing=1',
                        dataType: 'json',
                        data: {
                            "loginName": loginName,
                            "roleCode": roleCode,
                            "currpage": 1,
                        },
                        contentType: "application/x-www-form-urlencoded; charset=utf-8",//x-www-form-urlencoded
                        beforeSend: function (XMLHttpRequest) {
                        },
                        success: function (result) {
                            pageCount = result.count.rows[0];
                            data = result.party.rows;
                            vm.list1 = result.party.rows;
                            vm.currpage = result.currpage.rows[0];
                            vm.count = result.count.rows[0];
                            dropload.resetload();
                        },
                        error: function (xhr, type) {
                            alert('Ajax error!');
                            // 即使加载出错,也得重置
                            dropload.resetload();
                        }
                    });
                }*/
            });
        });
    </script>
    

    后台就不在这里罗嗦了,大家根据自己的写的来确定

    展开全文
  • 最近公司项目频繁用到ListView的相关功能,最常用的功能包括ListView的下拉刷新和上拉加载,于是我在网上找的例子的基础上进行了一些优化和封装,然后分享给大家。 一、使用 1.实现一个类RefreshListView,并继承自...

    最近公司项目频繁用到ListView的相关功能,最常用的功能包括ListView的下拉刷新和上拉加载,于是我在网上找的例子的基础上进行了一些优化和封装,然后分享给大家。

    一、使用

    1.实现一个类RefreshListView,并继承自ListView,实现onScrollListener接口。

    2.定义一个接口类OnRefreshListener,里面包含两个方法,一个用于定义下拉刷新,一个用于定义上拉加载。

    3.定义一个适配器,大家都懂的,就不赘述了

    3.编写Activity,初始化各种资源文件,加载网络数据,并让ListView绑定适配器,下拉刷新数据,上拉加载更多数据,并分别调用适配器对象的NotifyDataSetChanged方法。


    二、源码

    1.实现一个类RefreshListView,并继承自ListView,实现onScrollListener接口。

    package com.example.pulltorefreshlistview.view;
    
    import android.content.Context;
    import android.util.AttributeSet;
    import android.util.Log;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.animation.Animation;
    import android.view.animation.RotateAnimation;
    import android.widget.AbsListView;
    import android.widget.AbsListView.OnScrollListener;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    
    import com.example.pulltorefreshlistview.R;
    
    import java.text.SimpleDateFormat;
    
    /**
     * 下拉刷新和上拉加载更多的listView
     */
    public class RefreshListView extends ListView implements OnScrollListener {
    
        private static final String TAG = "RefreshListView";
        private int firstVisibleItemPosition; // 屏幕显示在第一个的item的索引
        private int downY; // 按下时y轴的偏移量
        private int headerViewHeight; // 头布局的高度
        private View headerView; // 头布局的对象
    
        private final int DOWN_PULL_REFRESH = 0; // 下拉刷新状态
        private final int RELEASE_REFRESH = 1; // 松开刷新
        private final int REFRESHING = 2; // 正在刷新中
        private int currentState = DOWN_PULL_REFRESH; // 头布局的状态: 默认为下拉刷新状态
    
        private Animation upAnimation; // 向上旋转的动画
        private Animation downAnimation; // 向下旋转的动画
    
        private ImageView ivArrow; // 头布局的剪头
        private ProgressBar mProgressBar; // 头布局的进度条
        private TextView tvState; // 头布局的状态
        private TextView tvLastUpdateTime; // 头布局的最后更新时间
    
        private OnRefreshListener mOnRefershListener;
        private boolean isScrollToBottom; // 是否滑动到底部
        private View footerView; // 脚布局的对象
        private int footerViewHeight; // 脚布局的高度
        private boolean isLoadingMore = false; // 是否正在加载更多中
    
        public RefreshListView(Context context, AttributeSet attrs) {
            super(context, attrs);
            initHeaderView();
            initFooterView();
            this.setOnScrollListener(this);
        }
    
        /**
         * 初始化脚布局
         */
        private void initFooterView() {
            footerView = View.inflate(getContext(), R.layout.listview_footer, null);
            footerView.measure(0, 0);
            footerViewHeight = footerView.getMeasuredHeight();
            footerView.setPadding(0, -footerViewHeight, 0, 0);
            this.addFooterView(footerView);
        }
    
        /**
         * 初始化头布局
         */
        private void initHeaderView() {
            headerView = View.inflate(getContext(), R.layout.listview_header, null);
            ivArrow = (ImageView) headerView.findViewById(R.id.iv_listview_header_arrow);
            mProgressBar = (ProgressBar) headerView.findViewById(R.id.pb_listview_header);
            tvState = (TextView) headerView.findViewById(R.id.tv_listview_header_state);
            tvLastUpdateTime = (TextView) headerView.findViewById(R.id.tv_listview_header_last_update_time);
    
            // 设置最后刷新时间
            tvLastUpdateTime.setText("最后刷新时间: " + getLastUpdateTime());
    
            headerView.measure(0, 0); // 系统会帮我们测量出headerView的高度
            headerViewHeight = headerView.getMeasuredHeight();
            headerView.setPadding(0, -headerViewHeight, 0, 0);
            this.addHeaderView(headerView); // 向ListView的顶部添加一个view对象
            initAnimation();
        }
    
        /**
         * 获得系统的最新时间
         *
         * @return
         */
        private String getLastUpdateTime() {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return sdf.format(System.currentTimeMillis());
        }
    
        /**
         * 初始化动画
         */
        private void initAnimation() {
            upAnimation = new RotateAnimation(0f, -180f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
            upAnimation.setDuration(500);
            upAnimation.setFillAfter(true); // 动画结束后, 停留在结束的位置上
    
            downAnimation = new RotateAnimation(-180f, -360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
            downAnimation.setDuration(500);
            downAnimation.setFillAfter(true); // 动画结束后, 停留在结束的位置上
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent ev) {
            switch (ev.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    downY = (int) ev.getY();
                    break;
                case MotionEvent.ACTION_MOVE:
                    int moveY = (int) ev.getY();
                    // 移动中的y - 按下的y = 间距.
                    int diff = (moveY - downY) / 2;
                    // -头布局的高度 + 间距 = paddingTop
                    int paddingTop = -headerViewHeight + diff;
                    // 如果: -头布局的高度 > paddingTop的值 执行super.onTouchEvent(ev);
                    if (firstVisibleItemPosition == 0 && -headerViewHeight < paddingTop) {
                        if (paddingTop > 0 && currentState == DOWN_PULL_REFRESH) { // 完全显示了.
                            Log.i(TAG, "松开刷新");
                            currentState = RELEASE_REFRESH;
                            refreshHeaderView();
                        } else if (paddingTop < 0 && currentState == RELEASE_REFRESH) { // 没有显示完全
                            Log.i(TAG, "下拉刷新");
                            currentState = DOWN_PULL_REFRESH;
                            refreshHeaderView();
                        }
                        // 下拉头布局
                        headerView.setPadding(0, paddingTop, 0, 0);
                        return true; //此处注释掉return true时,当listview下拉刷新时,屏蔽item点击事件
                    }
                    break;
                case MotionEvent.ACTION_UP:
                    // 判断当前的状态是松开刷新还是下拉刷新
                    if (currentState == RELEASE_REFRESH) {
                        Log.i(TAG, "刷新数据.");
                        // 把头布局设置为完全显示状态
                        headerView.setPadding(0, 0, 0, 0);
                        // 进入到正在刷新中状态
                        currentState = REFRESHING;
                        refreshHeaderView();
    
                        if (mOnRefershListener != null) {
                            mOnRefershListener.onDownPullRefresh(); // 调用使用者的监听方法
                        }
                    } else if (currentState == DOWN_PULL_REFRESH) {
                        // 隐藏头布局
                        headerView.setPadding(0, -headerViewHeight, 0, 0);
                    }
                    break;
                default:
                    break;
            }
            return super.onTouchEvent(ev);
        }
    
        /**
         * 根据currentState刷新头布局的状态
         */
        private void refreshHeaderView() {
            switch (currentState) {
                case DOWN_PULL_REFRESH: // 下拉刷新状态
                    tvState.setText("下拉刷新");
                    ivArrow.startAnimation(downAnimation); // 执行向下旋转
                    break;
                case RELEASE_REFRESH: // 松开刷新状态
                    tvState.setText("松开刷新");
                    ivArrow.startAnimation(upAnimation); // 执行向上旋转
                    break;
                case REFRESHING: // 正在刷新中状态
                    ivArrow.clearAnimation();
                    ivArrow.setVisibility(View.GONE);
                    mProgressBar.setVisibility(View.VISIBLE);
                    tvState.setText("正在刷新中...");
                    break;
                default:
                    break;
            }
        }
    
        /**
         * 当滚动状态改变时回调
         */
        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
    
            if (scrollState == SCROLL_STATE_IDLE) {
                // 判断当前是否已经到了底部
                if (isScrollToBottom && !isLoadingMore) {
                    isLoadingMore = true;
                    // 当前到底部
                    Log.i(TAG, "加载更多数据");
                    footerView.setPadding(0, 0, 0, 0);
                    this.setSelection(this.getCount());
    
                    if (mOnRefershListener != null) {
                        mOnRefershListener.onLoadingMore();
                    }
                }
            }
        }
    
        /**
         * 当滚动时调用
         *
         * @param firstVisibleItem 当前屏幕显示在顶部的item的position
         * @param visibleItemCount 当前屏幕显示了多少个条目的总数
         * @param totalItemCount   ListView的总条目的总数
         */
        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            firstVisibleItemPosition = firstVisibleItem;
    
            if (getLastVisiblePosition() == (totalItemCount - 1)) {
                isScrollToBottom = true;
            } else {
                isScrollToBottom = false;
            }
        }
    
        /**
         * 设置刷新监听事件
         *
         * @param listener
         */
        public void setOnRefreshListener(OnRefreshListener listener) {
            mOnRefershListener = listener;
        }
    
        /**
         * 隐藏头布局
         */
        public void hideHeaderView() {
            headerView.setPadding(0, -headerViewHeight, 0, 0);
            ivArrow.setVisibility(View.VISIBLE);
            mProgressBar.setVisibility(View.GONE);
            tvState.setText("下拉刷新");
            tvLastUpdateTime.setText("最后刷新时间: " + getLastUpdateTime());
            currentState = DOWN_PULL_REFRESH;
        }
    
        /**
         * 隐藏脚布局
         */
        public void hideFooterView() {
            footerView.setPadding(0, -footerViewHeight, 0, 0);
            isLoadingMore = false;
        }
    }
    


    2.实现接口类

       

    package com.example.pulltorefreshlistview.view;
    
    /**
     * pull to refresh and loading more interface
     *
     */
    public interface OnRefreshListener {
    
    
        void onDownPullRefresh();
    
    
        void onLoadingMore();
    }
    

    3.定义适配器

    package com.example.pulltorefreshlistview.adapter;
    
    
    import android.content.Context;
    import android.graphics.Color;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;
    
    import java.util.List;
    
    
    /**
     * MyAdapter.java
     * Function: listView adapter
     * Created by xzy on 2016/4/28.
     */
    public class MyAdapter extends BaseAdapter {
        private List listItem;
        private Context context;
    
        public MyAdapter(Context context){
            this.context = context;
        }
    
        public void setListItem(List listItem) {
            this.listItem = listItem;
        }
    
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return listItem.size();
        }
    
        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return listItem.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            TextView textView = new TextView(context);
            textView.setText(listItem.get(position).toString());
            textView.setTextColor(Color.WHITE);
            textView.setTextSize(18.0f);
            return textView;
        }
    
    }
    4.编写Activity

    package com.example.pulltorefreshlistview;
    
    import android.app.Activity;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.os.SystemClock;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ListView;
    import android.widget.Toast;
    
    import com.example.pulltorefreshlistview.adapter.MyAdapter;
    import com.example.pulltorefreshlistview.view.OnRefreshListener;
    import com.example.pulltorefreshlistview.view.RefreshListView;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     *实现上拉加载更多、下拉刷新listView的demo
     */
    public class MainActivity extends Activity implements OnRefreshListener , AdapterView.OnItemClickListener {
    
        private List<String> textList;
        private MyAdapter adapter;
        private RefreshListView rListView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            initView();
    
            adapter = new MyAdapter(this);
            adapter.setListItem(textList);
            rListView.setAdapter(adapter);
            //刷新事件监听
            rListView.setOnRefreshListener(this);
            //item点击事件监听
            rListView.setOnItemClickListener(this);
        }
    
        public void initView(){
            rListView = (RefreshListView) findViewById(R.id.refreshListView);
            //屏蔽边界回弹效果
            rListView.setOverScrollMode(ListView.OVER_SCROLL_NEVER);
            textList = new ArrayList<String>();
            for (int i = 0; i < 5; i++) {
                textList.add("这是一条ListView的数据" + i);
            }
        }
    
    
        /**
         * 下拉刷新
         */
        @Override
        public void onDownPullRefresh() {
            new AsyncTask<Void, Void, Void>() {
    
                @Override
                protected Void doInBackground(Void... params) {
                    SystemClock.sleep(2000);
                    //加载网络数据
                    for (int i = 0; i < 2; i++) {
                        textList.add(0, "这是下拉刷新出来的数据" + i);
                    }
                    return null;
                }
    
                @Override
                protected void onPostExecute(Void result) {
                    adapter.notifyDataSetChanged();
                    rListView.hideHeaderView();
                }
            }.execute(new Void[] {});
        }
    
        /**
         * 上拉加载
         */
        @Override
        public void onLoadingMore() {
            new AsyncTask<Void, Void, Void>() {
    
                @Override
                protected Void doInBackground(Void... params) {
                    SystemClock.sleep(2000);
                    //加载网络数据
                    textList.add("这是加载更多出来的数据1");
                    textList.add("这是加载更多出来的数据2");
                    textList.add("这是加载更多出来的数据3");
                    return null;
                }
    
                @Override
                protected void onPostExecute(Void result) {
                    //数据刷新
                    adapter.notifyDataSetChanged();
                    // 控制脚布局隐藏
                    rListView.hideFooterView();
                }
            }.execute(new Void[] {});
        }
    
    
        /**
         * item click event
         * @param adapterView
         * @param view
         * @param i
         * @param l
         */
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Toast.makeText(this,"position"+i,Toast.LENGTH_SHORT).show();
        }
    }
    
    OnScrollerListener接口中方法的执行顺序请参考http://www.2cto.com/kf/201402/278552.html

    源码下载:https://yunpan.cn/cRXr6P9h3uvuK  访问密码 269a

    展开全文
  • 乐速优化王SEO软件是由逆思维网络科技有限公司对搜素引擎算法多年跟踪研究,采用全新的智能云优化技术,开发出来的一款能够有效的跟踪企业网站的SEO状况,分析企业网站在各大搜索引擎上的排名变化趋势,分析竞争对手...
  • 网站云优化软件是由北京艾迪顿网络科技有限公司对搜素引擎算法多年跟踪研究,采用全新的智能云优化技术,开发出来的一款能够有效的跟踪企业网站的SEO状况,分析企业网站在各大搜索引擎上的排名变化趋势,分析竞争...
  • 公司管理后台需要有一个 根据选择客户筛选拥有的服务 的功能 问题描述: 但是有上千条用户数据,一次性查询加载会导致页面有很长时间(大概4~5s)的空白期,用户体验很不友好。 故需要进行优化,针对这个问题,...

    项目场景:

    在公司管理后台需要有一个 根据选择客户筛选拥有的服务 的功能

    问题描述:

    但是有上千条用户数据,一次性查询加载会导致页面有很长时间(大概4~5s)的空白期,用户体验很不友好。
    故需要进行优化,针对这个问题,网上解决方案也挺多的,此处参考 https://juejin.cn/post/6844903710972182536 解决方案,根据项目做了部分减配

    解决方案:

    一方面优化MySQL查询语句,另一方面前端分页查询数据。
    本文主要讲述如何修改 ElementUI 的el-select 组件支持分页查询数据

    定义指令

    # directives/index.js
    
    import Vue from 'vue'
    export default () => {
        Vue.directive('el-select-scroll', {
            bind(el, binding) {
                // 获取滚动页面DOM
                let SCROLL_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap')
                let scrollPosition = 0
                SCROLL_DOM.addEventListener('scroll', function () {
                    // 当前的滚动位置 减去  上一次的滚动位置
                    // 如果为true则代表向上滚动,false代表向下滚动
                    let flagToDirection = this.scrollTop - scrollPosition > 0
                    // console.log(flagToDirection ? '滚动方向:下' : '滚动方向:上')
    
                    // 记录当前的滚动位置
                    scrollPosition = this.scrollTop
    
                    // 记录滚动位置距离底部的位置,在滚动位置距离滚动页面底部一定高度时在触发,例如距页面底部只有100px时触发handleScroll事件
                    const LIMIT_BOTTOM = 10
                    let scrollBottom = this.scrollHeight - (this.scrollTop + this.clientHeight) < LIMIT_BOTTOM
                    // 如果已达到指定位置则触发
                    // 如果向下滚动 并且距离底部只有10px
                    if (flagToDirection && scrollBottom) {
                        // 将滚动行为告诉组件
                        binding.value(flagToDirection)
                    }
                    // 如果是向上滚动  并且距离顶部只有100px
                    if (!flagToDirection && this.scrollTop < LIMIT_BOTTOM) {
                        binding.value(flagToDirection)
                    }
    
                })
            }
        })
    }
    
    

    vue中引入指令

    # app.js
    
    import directive from "./directives";
    Vue.use(directive)
    

    el-select 加入新指令 el-select-scroll

    <template>
    	<el-select v-model="searchForm.user_id" v-el-select-scroll="handleScroll" size="mini" :loading="loadStatus" :placeholder="placeholder" value-key="id" @focus="handleFocus">
    	    # 搜索框
    	    <el-input type="text" size="mini" v-model="queryKeyword" @keydown.enter.native="remoteSearch" placeholder="回车搜索客户,按字母排序"></el-input>
    	    # 下拉列表数据
    	    <el-option v-for="(el,key) in ownUserList" :key="key" :label="formatLabel(el)" :value="el.id"></el-option>
    	</el-select>
    
    </template>
    
    <script>
    export default {
      name: "app-selectOwnUser",
      data() {
        return {
          searchForm: { user_id: "" },
          ownUserList: [],
          loadStatus: false,
          pageNum: 1,
          queryKeyword: "",
        };
      },
      methods: {
      	ajaxGetInfo(pageNum = this.pageNum){
          this.loadStatus = true
          let params = {
              page: pageNum
          }
          get("api/user/lists", params).then(res => {
            this.loadStatus = false
            if (res.errcode) {
              this.$message({
                showClose: true,
                message: res.msg,
                type: "error"
              });
              return false;
            }
            this.ownUserList = this.ownUserList.concat(res.data);
          });
        },
    	handleFocus(){
    		/**
    		 * select 获取焦点时,重置参数
    		 *  
             */
            this.queryKeyword = "";
            this.ownUserList = [];
            this.ajaxGetInfo(1);
        },
        handleScroll(param){
            /*
             * 处理滚动行为
             * param: 滚动行为
             *  true 向下滚动
             *  false 向上滚动
             */
            // console.log(param)
            // 此处判断 !this.queryKeyword 是防止在搜索关键词的结果上追加数据
            // 在后台判断关键词长度,至少要输入2个关键字,才可搜索
            // 否则,还是会出现查询时间长的情况
            if(param && !this.queryKeyword){
                // 请求下一页数据
                this.ajaxGetInfo(++this.pageNum)
            }
        },
        remoteSearch(){
            let params={
                keyword: this.queryKeyword
            }
            this.loadStatus = true
            get("api/user/lists", params).then(res => {
                this.loadStatus = false
                if (res.errcode) {
                    this.$message({
                        showClose: true,
                        message: res.msg,
                        type: "error"
                    });
                    return false;
                }
                this.ownUserList = res.data;
          });
        },
      }
    }
    </script>
    
    
    展开全文
  • (2)设置关闭无响应程序的等待时间: (3)设置动态链接库的搜索顺序: (4)设置应用程序出错时等待响应时间: (5)修改公司名:对系统中的公司名称进行修改。 (6)修改用户名:对系统中的用户名进行修改。 (7...
  • 1、搜索引擎下拉框(如:百度搜索用户联想区),让您公司占领最火爆、最抢眼的下拉位置,让客户被动接受产品最强势的营销。 2、刷搜索引擎相关搜索(如:百度底层相关搜索);可以让搜索某一个行业关键词时,出现...
  • 1、搜索引擎下拉框(如:百度搜索用户联想区),让您公司占领最火爆、最抢眼的下拉位置,让客户被动接受产品最强势的营销。 2、刷搜索引擎相关搜索(如:百度底层相关搜索);可以让搜索某一个行业关键词时,出现你...
  • ,数据库无冗余表完整备份,利于SEO优化、代码书写规范,添加TAG聚合标签,整站完整打包,适用于体育、赛事、NBA足球等相关行业自资讯类网站使用;本织梦模板整站完整打包,直接安装恢复数据即可使用,功能强大,本...
  • 艺帆集团公司企业网站源码基于艺帆企业cms制作,全站div+css 制作;它包含了单页设置、单页分类设置、新闻、产品、下载、在线招聘、在线留言、幻灯管理、友情链接管理和数据库备份等功能。 DIV+CSS布局优势一.精简...
  • 如网站导航中的文字颜色变化、下拉菜单等。   艺帆CMS是由艺帆互联开发,用于服务广大互联网工作者.简单易用,高扩展性是艺帆CMS的特征,艺帆的主旨是打造最适合大众的免费cms,企业cms,免费网站模板,免费的网站制作...
  • 模板标题:仿者时尚大气木门防盗门公司网站模板 模板版本:艺帆企业CMS V1.8 ...如网站导航中的文字颜色变化、下拉菜单等。 全站完整无错,如无法架设可以去论坛看下教程 后台地址:i5808 账号:i5808 密码:123456
  • 百度地图开发java源码 ProjectFramework android 开发框架 ...解决了下拉刷新组件 RefreshLayout 容易出发刷新问题 增加了沉浸式状态栏父类 2.0.0 添加通用代码控件 FormCommSpinner 废弃了 BaseListViewAc
  • 基于redis的zSet集合做数据缓存实现分页查询 java

    万次阅读 热门讨论 2018-05-24 15:34:20
    需要场景:最近公司要做手机页面展示新闻文章数据查询的优化工作,让我提个优化方案。现状是目前手机页面的数据请求系统后台,系统后台然后调用其他系统的接口,返回分页数据到前台展示,这样一来,用户每次下拉到...
  • 网易泡泡(POPO) 2012 v1.1

    2019-11-05 19:39:32
    由中国领先的互联网技术公司网易(NetEase)开发的功能强大,方便灵活的即时... 网易POPO2012 V1.0更新内容:新增离线文件传输/截图编辑+优化文件传输功能及UI表现+优化"随心抓"下拉菜单+优化系统托盘图标右键菜单...
  • 2015大气绿色企业网站中文宽屏版 3.0 更新日志:1:网站布局为大气宽屏版2:美化导航下拉菜单3:首页增加新闻滑轮切换分类功能4:增加QQ客服务系统 后台可以进行添加和删除5:美化产品分类和优化公司产品展示滚动6:后台...
  • 最近公司要做手机页面展示新闻文章数据查询的优化工作,让我提个优化方案。现状是目前手机页面的数据请求系统后台,系统后台然后调用其他系统的接口,返回分页数据到前台展示,这样一来,用户每次下拉到页面底部加载...
  • 天狐搜索引擎 v2.0

    2021-04-04 00:15:32
    天狐搜索引擎是由天狐公司开发的一款免费搜索引擎,面向大众化. 天狐2.0继上一版本新增与更新内容: 1.增加综合搜索能力 2.与百度,谷歌等知名搜索引擎联用索引结果 3.优化界面显示结果 4.对索引结果进行编排 5....
  •   最近在对公司项目中的控件进行优化改造,其中一个是能够上拉和下拉的弹性ScrollView。   发现没有,当使用一个手指的时候感觉还不错。但是当我想用两个手指交替不断下拉想要把视图内容往下“扒”的时候就...
  • 天狐搜索引擎 v2.0.zip

    2019-07-07 07:17:42
    天狐搜索引擎是由天狐公司开发的一款免费搜索引擎,面向大众化。   天狐2.0继上一版本新增与更新内容: 1.增加综合搜索能力 2.与百度,谷歌等知名搜索引擎联用索引结果 3.优化界面显示结果 4.对索引结果进行...
  • 宽屏大气网站源码

    2021-04-04 22:38:37
    宽屏大气网站源码采用asp+access进行开发,软件包含了关于我们、新闻中心和产品展示等功能。...5:美化产品分类和优化公司产品展示滚动 6:后台登录更加安全增加验证码 7:增加产品在线订购功能 8:添加栏目类型,案例展示
  • php天狐搜索引擎v2.0

    2019-07-25 12:25:15
    天狐搜索引擎V2.0 中秋特别版 简介: 天狐搜索引擎是由天狐公司开发的一款免费搜索引擎,面向大众化. 天狐2.0继上一版本新增与更新内容: 1.增加综合搜索能力 2.与百度,谷歌等知名搜索引擎联用索引结果 3.优化界面...
  • 搜索,可以设置搜索范围(用户、学校、公司) 附近的微博和人,两种显示方式(列表显示、地图显示) 在tableview中上添加固定位置的子视图 自定义大头针视图 #####5. 我(个人中心) 个人主页 授权及及取消授权 ####...
  •  3、多项为系统优化而设置的功能接口:站内链接(站内链接的合理建造是搜索引擎优化的重要技术之一,它的优化能使网站整体获得搜索引擎的价值认可,这个优化措施主要是建立方便、直接、全面的浏览导航链接,使每一页...
  • 这几天公司的项目已经完成的差不多了,只剩下各种优化问题。今天着重于图片加载的优化。当一个页面需要下拉很长而且又有过多的图片要加载时,就会发生很多http请求,就会拉慢网页加载速度,用户体验不友好。怎么解决...
  • 2015大气绿色企业网站中文宽屏版 v3.0 ------------------------- 简 介------...5:美化产品分类和优化公司产品展示滚动 6: 后台登录更加安全增加验证码 7:增加产品在线订购功能 8:添加栏目类型,案例展示

空空如也

空空如也

1 2 3 4 5 6
收藏数 113
精华内容 45
关键字:

下拉优化公司