Ant Design Vue教程

Ant Design Vue Cascader loadData ajax服务器端加载的例子

如果联级加载的数据量比较大比如上万条数据甚至几十万条数据,那么就不适合一次性把这些数据全部加载到前端网页,需要动态向服务器加载,Cascader通过了loadData方法来实现。

在线例子

例子

node.js webpack方式

<template>
  <a-cascader
    :options="options"
    @change="onChange"
    :loadData="loadData"
    placeholder="请选择"
    changeOnSelect
    style="width:330px"
  />
</template>
<script>
  export default {
    data() {
      return {
        options: [
          {
            value: 'zhejiang',
            label: '浙江省',
            isLeaf: false,
          },
          {
            value: 'jiangsu',
            label: '江西省',
            isLeaf: false,
          },
        ],
      };
    },
    methods: {
      onChange(value) {
        console.log(value);
      },
      //这个是模拟的ajax请求,你可以把这部分代码改成真正的ajax请求
      loadData(selectedOptions) {
        const targetOption = selectedOptions[selectedOptions.length - 1];
        targetOption.loading = true;

        // load options lazily
        setTimeout(() => {
          targetOption.loading = false;
          targetOption.children = [
            {
              label: `${targetOption.label} 服务器端加载1`,
              value: 'dynamic1',
            },
            {
              label: `${targetOption.label} 服务器端加载2`,
              value: 'dynamic2',
            },
          ];
          this.options = [...this.options];
        }, 1000);
      },
    },
  };
</script>

浏览器方式实现

和webpack方式不同的是需要把<a-locale-provider :loadData="loadData"/>改成<a-locale-provider :load-data="loadData"/>即可

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Ant Design Vue Cascader ajax服务器端加载的例子</title>
    <script src="http://www.itxst.com/package/vue/vue.min.js"></script>
    <script src="http://www.itxst.com/package/ant-design-vue/antd.min.js"></script>
    <link href="http://www.itxst.com/package/ant-design-vue/antd.min.css" rel="stylesheet" />
    <!--需要引入vue-dash-event插件-->
    <script src="http://www.itxst.com/package/ant-design-vue/vue-dash-event.js"></script>
    <!--国际化-->
    <script src="http://www.itxst.com/package/ant-design-vue/antd-with-locales.min.js"></script>
    <style>
        body {
            padding-top: 10px
        } 
        .ant-pagination-item-link.red {
            color: red;
            padding-left: 6px;
            padding-right: 6px;
        }
    </style>
</head>
<body>
    <div id="app">
        <a-locale-provider :locale="locales.zh_CN">
            <a-cascader :options="options" @change="onChange"
             :load-data="loadData" placeholder="输入浦区试试看"
                        style="width: 330px"></a-cascader>
        </a-locale-provider>
    </div>
    <script>
        //本地化
        const { LocaleProvider, locales } = window.antd;
        //vue-dash-event插件
        Vue.use(window['vue-dash-event']);
        var app = new Vue({
            el: '#app',
            data() {
                return {
                    options: [
          {
            value: 'zhejiang',
            label: '浙江省',
            isLeaf: false,
          },
          {
            value: 'jiangsu',
            label: '江西省',
            isLeaf: false,
          },
        ],
                };
            },
            methods: {
                onChange(value) {
                    console.log(value);
                },
                  loadData(selectedOptions) {
        const targetOption = selectedOptions[selectedOptions.length - 1];
        targetOption.loading = true;


        //这个是模拟的ajax请求,你可以把这部分代码改成真正的ajax请求
        setTimeout(() => {
          targetOption.loading = false;
          targetOption.children = [
            {
              label: `${targetOption.label} 服务器端加载1`,
              value: 'dynamic1',
            },
            {
              label: `${targetOption.label} 服务器端加载2`,
              value: 'dynamic2',
            },
          ];
          this.options = [...this.options];
        }, 1000);
      },
            },
        });
    </script>
</body>
</html>


文章目录
快速入门 Button 按钮 Affix 固钉 Breadcrumb 面包屑 Dropdown 下拉菜单 Dropdown 下拉菜单 Dropdown 展开隐藏方法 Dropdown 属性及事件 Menu 导航菜单 Menu 导航菜单 Menu 导航菜单属性及事件 Pagination 分页 Pagination 跳转 Pagination 自定义下拉选项 Pagination 选择每页数量 Pagination 自定义页码文字 Pagination 样式风格 Pagination 属性列表 Pagination 事件列表 Steps 步骤条 Steps 步骤条基本用法 Steps 自定义图标和html Steps 属性列表 AutoComplete 自动填充 AutoComplete 自动完成组件 AutoComplete 前端筛选函数 AutoComplete 自定义选项 AutoComplete Ajax服务器端数据 AutoComplete 查询模式 AutoComplete 属性列表 AutoComplete 事件 AutoComplete 方法列表 Cascader 级联选择 Cascader 基础用法 Cascader 搜索筛选 Cascader ajax服务器端加载 Cascader 样式及自定义图标