vue中使用el-dropdown方式

目录
  • vue 使用el-dropdown
  • vue el-dropdown点击事件

vue 使用el-dropdown

点击【更多】弹出如下选项

使用el-dropdown

          <el-dropdown
            @command="
              (command) => {
                handleCommand(command, scope.$index, scope.row);
              }
            "
          >
            <el-link type="primary" :underline="false" style="margin-left: 10px"
              >更多</el-link
            >
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item command="f" v-if="scope.row.active_type == 1"
                ><i class="el-icon-download"></i>资料下载</el-dropdown-item
              >
              <el-dropdown-item command="a"
                ><i class="el-icon-document-copy"></i>复制</el-dropdown-item
              >
              <el-dropdown-item command="b" v-if="scope.row.is_top == 0"
                ><i class="el-icon-top"></i>置顶</el-dropdown-item
              >
              <el-dropdown-item command="c" v-if="scope.row.is_top >= 1"
                ><i class="el-icon-top"></i>取消置顶</el-dropdown-item
              >
              <el-dropdown-item command="d"
                ><i class="el-icon-edit"></i>重命名</el-dropdown-item
              >
              <el-dropdown-item
                command="e"
                v-if="scope.row.active_join_num == 0"
                ><i class="el-icon-delete"></i>删除</el-dropdown-item
              >
            </el-dropdown-menu>
          </el-dropdown>
   <!-- 弹出的重命名-->
    <el-dialog title="重命名" :visible.sync="renamePopUp" width="500px">
      <el-form :model="form" label-width="70px">
        <el-form-item label="新名称:">
          <el-input
            placeholder="请输入"
            v-model="form.active_name"
            class="d2-mr-15"
            clearable
          ></el-input>
        </el-form-item>
      </el-form>
      <!-- 编辑框中的确认取消按钮 -->
      <div slot="footer" class="dialog-footer">
        <el-button @click="checkClose" size="medium">取消</el-button>
        <el-button
          type="primary"
          @click="changeData"
          :loading="saveLoading"
          size="medium"
          >确定</el-button
        >
      </div>
    </el-dialog>
   /**
     * 更多
     */
    handleCommand(command, index, row) {
      console.log("command", command, row);
      //复制
      if (command == "a") {
        Ajax(
          {
            method: "put",
            url: "/active/copy",
            params: { active_id: row.active_id },
          },
          (res) => {
            this.saveLoading = false;
            if (res.status_code === 200) {
              this.$message({ message: "复制成功", type: "success" });
              // 复制成功回到第一页
              this.pageInfo.currentPage = 1;
              this.getData();
            }
          },
          (err) => {
            this.saveLoading = false;
          }
        );
      }
      //置顶
      if (command == "b") {
        this.handleTop(row, 1);
      }
      //取消置顶
      if (command == "c") {
        this.handleTop(row, 0);
      }
      // 重命名
      if (command == "d") {
        this.renamePopUp = true;
        this.form = row;
        this.editPostUrl = 3;
      }
      //删除
      if (command == "e") {
        this.handleDelete(index, row);
      }
      //资料下载
      if (command == "f") {
        window.open(row.url_arr[0]);
      }
    },
    /**
     * 置顶
     */
    handleTop(row, is_top) {
      this.loading = true;
      console.log(row.is_top);
      Ajax(
        {
          url: "/active/top", // 路径
          method: "put",
          params: { active_id: row.active_id, is_top: is_top },
        },
        (res) => {
          this.loading = false;
          if (res.status_code === 200) {
            this.$message({ message: "操作成功", type: "success" });
            this.getData();
          }
        },
        (err) => {
          this.loading = false;
        }
      );
    },
    /**
     * 删除
     */
    handleDelete(index, row) {
      this.$confirm("你是否确认删除这个活动?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "error",
      })
        .then(() => {
          this.loading = true;
          //删除
          Ajax(
            {
              method: "delete",
              url: "/active",
              params: { active_id: row.active_id },
            },
            (res) => {
              this.loading = false;
              if (res.status_code === 200) {
                this.$message({ message: "删除活动成功", type: "success" });
                this.getData();
              }
            },
            (err) => {
              this.loading = false;
            }
          );
        })
        .catch(() => {
          this.$message({ type: "info", message: "已取消删除" });
        });
    },

vue el-dropdown点击事件

vue el-dropdown点击事件有个神坑,@click不起效,要在后面加 @click.native才能生效

如下

        <el-dropdown-menu slot="dropdown">
                  <el-dropdown-item v-print="'#printTest'">打印</el-dropdown-item>
                  <el-dropdown-item @click.native="clickGeneratePicture">图片另存为</el-dropdown-item>
                  <el-dropdown-item @click.native="lookFrish">刷新</el-dropdown-item>
                </el-dropdown-menu>
```</el-dropdown>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue+element搭建后台小总结 el-dropdown下拉功能

    本文实例为大家分享了el-dropdown下拉功能的具体代码,供大家参考,具体内容如下 功能:点击el-dropdown 下拉 下拉的数据 从后台获取 遍历到界面上 且多个el-dropdown下拉 共用 一个 @command 事件  @command="handleCommand" 上代码部分  html //全部城市 下拉 //handleCommand下拉事件 all_city点击后显示在上面的数据 item.label下拉的数据 :command点击传的值 用flag来区分同

  • ElementUI中的el-dropdown传入多参数的实现方法

    最近工作中因为业务中按钮的增多,导致页面排版按钮过多,页面不够美观,用户体验不佳,于是想到利用el-dropdown做一个下拉按钮(把多个按钮整合到了一起,下拉实现) 但是ElementUi官方文档中的handleCommand方法只允许接入一个参数,这个参数用于触发你选择的是哪一个选项.而我们实际中还需要传入一个当前行数(如果和我一样,也是用table显示数据的话)的对象进去,后面要使用这个对象的某些字段传给后台进行一些增删改查的操作. ElementUi官方文档中el-dropdown的样例

  • elementUI组件el-dropdown(踩坑)

    选择即改变:click选择哪个,就显示当前的值,页面UI显示并伴随css样式的变化. 重点:v-if 和 v-else-if 的搭配使用,缺一不可. 效果图: 正确的代码如下: 重要提示: 我之前使用的全部是v-if判断,没有搭配v-else-if,所以就出现了bug:即只能点击一次,(然后就失效了)就不能继续点击了. 但是我想要的功能:是能改变之前的选择状态. 所以,才有了下面的代码优化(逻辑上的优化). <div class="it-after" v-if=" re

  • 浅谈vue中所有的封装方式总结

    目录 1.封装API 2.注册全局工具组件 3.封装全局函数 4. 为了减少页面代码量的封装 如何确定我需要封装呢? 1.复用,如果觉得以后还会用到 2.你觉得方便,别的地方可能也需要用 3.如果不封装,页面代码臃肿的时候 1.封装API 使用场景:业务中最常见最普通的封装 步骤一: 步骤二:  步骤三:  2.注册全局工具组件 使用场景:想让组件全局可用,尤其是第三方插件使用时 步骤一:   步骤二: 3.封装全局函数 使用场景:有些逻辑处理函数代码量很大,且具有独特功能(如日期处理函数,数组

  • vue中各种通信传值方式总结

    1.路由通信传值 路由通信是通过路由跳转用query把参数带过去,也是vue常用的通信手段. 例子:创建并在路由注册一个组件Head <template> <div id="head"> <button @click="handleChange">clickMe</button> //给按钮绑定点击事件 </div> </template> <script> export defau

  • Vue中的ESLint配置方式

    目录 说说Vue项目中添加ESLint的规则 第一步:安装 第二步:配置.eslintrc文件 第三步:如图配置 用惯了组里统一的代码风格,再看默认的vue项目代码很是别扭,记录下ESLint配置,以后直接copy paste,美滋滋 官网:https://eslint.org/docs/rules/ ESLint配置方式 ESLint有三种配置方式,一般自定义规则较少时,选第2种:自定义配置很多,建议第1种:第3种常用于对某句代码禁用eslint. 1.在package.json中通过esli

  • vue中的vue-router query方式和params方式详解

    目录 vue 的路由跳转有两种方式 一般组件 路由组件 路由跳转方式一 (router-link) 以及 传递参数 params方式传递参数 router-link中的写法如下 编程式路由导航 下面说一下, props的三种赋值的方式 看一下第一种使用props的代码 第二种方式 第三种方式 我们在vue中项目中, 使用 vue-router 是比较常见的 vue 的路由跳转有两种方式 一种是使用组件 router-link 另一种就是编程式路由导航 我们可以把vue 的组件分为两种, 一种是一

  • vue中如何通过iframe方式加载本地的vue页面

    目录 通过iframe方式加载本地的vue页面 iframe方式加载本地的vue页面的第一种方法 iframe方式加载本地的vue页面的第二种方法 iframe方式加载本地的vue页面的第三种方法 关于iframe在vue中应用问题 iframe的宽高无法根据内容撑开 通过iframe方式加载本地的vue页面 也是在实际的项目中碰到一个奇葩的需求,用vue,居然还要用到iframe,真是脑壳大,试了好多次最后才找到了正确的方法. 总共有三种方法吧 iframe方式加载本地的vue页面的第一种方法

  • Vue中$forceUpdate()的使用方式

    目录 $forceUpdate()的使用 有两种解决方法 方法一 方法二 关于$forceUpdate的一些理解 $forceUpdate()的使用 在Vue官方文档中指出,$forceUpdate具有强制刷新的作用. 那在vue框架中,如果data中有一个变量:age,修改他,页面会自动更新. 但如果data中的变量为数组或对象,我们直接去给某个对象或数组添加属性,页面是识别不到的 <template> <p>{{userInfo.name}}</p> <but

  • Vue中mapMutations传递参数方式

    目录 通过子组件定义的方法传递参数 在…mapMutations引用 当然也可以写直接传递 关于mapMutations的作用 通过子组件定义的方法传递参数 在…mapMutations引用 不多逼逼,看代码! store文件中: import Vuex from 'vuex'; import Vue from 'vue'; Vue.use(Vuex); let store = new Vuex.Store({     state: {         name: 'hahahah',    

  • vue中常用的缩写方式

    目录 vue常用缩写 绑定数据 v-bind 监听事件 v-on vue的简写 vue常用缩写 绑定数据 v-bind v-bind 的缩写是 : 可以使用 setAttribute 设置 , getAttribute 获取的属性都可以使用这种动态绑定 列举一些使用频率比较高的,比如: :title.:class.:style.:key.:item.:index.:src.:href 例子: // HTML <div v-bind:title="message">绑定数据&

  • vue中输入框事件的使用及数值校验方式

    目录 vue输入框事件使用及数值校验 一.@input(或者是v-on:input) 二.@change 三.@keyup.enter 四.@blur(失焦) 提示和注释 vue中常用表单校验规则整理 这里整理了一些高频率用到的校验方法 vue输入框事件使用及数值校验 最近做项目,用到vue去监听输入框当中值,并且去校验值的正确性, 我们都知道 vue 当中 主要监听输入框的方法有四个:input  change blur  keyup.enter 他们都可以使用@+xxxx="在vue当中定义

  • vue中i18n的安装与几种使用方式详解

    目录 vue中i18n安装 项目中的使用 使用方式 组件里使用 使用方式js 总结 介绍 Vue I18n 是 Vue.js 的国际化插件.它可以轻松地将一些本地化功能集成到你的 Vue.js 应用程序中. vue中i18n安装 1.在项目中安装i18n npm install vue-i18n 2.如果在一个模块系统中使用它,你必须通过 Vue.use() 明确地安装 vue-i18n: import Vue from 'vue' import VueI18n from 'vue-i18n'

随机推荐