vue2.0和quasarUI封装弹出框可拖拽

子组件完整代码:

<template>
  <q-dialog v-on="$listeners" v-bind="$attrs" @hide="onDialogHide">
    <q-card
      style="max-width: 80vw; width: 600px; position: relative"
      :style="{ right: dialogX + 'px', top: dialogY + 'px' }"
    >
      <q-card-section
        class="row items-center q-pb-none"
        v-touch-pan.prevent.mouse="onMouseDrag"
        :style="{ cursor: allowDrag ? 'grab' : '' }"
      >
        <slot name="title">
          <div class="text-h6">提示</div>
        </slot>
        <q-space />
      </q-card-section>
      <q-btn
        icon="close"
        flat
        round
        dense
        v-close-popup
        style="
          position: absolute;
          right: 10px;
          top: 10px;
        "
      />
      <q-card-section class="q-pt-none" v-touch-pan.prevent.mouse="onMouseDrag">
        <slot name="default">
          <span class="text-subtitle1">很多人就是不看文档 !</span>
        </slot>
      </q-card-section>
    </q-card>
  </q-dialog>
</template>
<script>
export default {
  name: "GhDialog",
  props: {
    allowDrag: {
      type: Boolean,
      default: false,
    },
  },
  data() {
    return {
      dialogX: 0,
      dialogY: 0,
    };
  },
  methods: {
    onMouseDrag({ delta }) {
      if (!this.allowDrag) return;
      this.dialogX -= delta.x;
      this.dialogY += delta.y;
    },
    onDialogHide() {
      this.dialogX = 0;
      this.dialogY = 0;
    },
  },
};
</script>
<style scoped lang="scss"></style>

父组件使用的完整代码:

效果图:

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴能解答您的问题。关于您提到的问题,我可以向您提供一些基础信息和建议,但是需要提醒的是,我并不是一个完全精通于技术领域的AI,因此我的回答仅供参考。 针对您的问题,我们首先需要了解什么是vue2.0和axios。Vue.js是一个前端架,而axios则是一个用于发送http请求的JavaScript库。在Vue.js中使用axios可以方便地向服务器发送请求,获取数据等。 对于二次封装axios,常见的做法是在Vue.js中创建一个Api.js文件,将需要用到的接口全部封装成方法,以便在Vue组件中调用。这些方法使用axios发送请求,并返回Promise对象。 下面是一个简单的使用axios发送GET请求的代码示例: ``` import axios from 'axios' const baseUrl = 'https://api.example.com/' export function getUser(userId) { return axios.get(`${baseUrl}/users/${userId}`) } ``` 使用时,可以在Vue组件中调用`getUser`方法,并使用Promise的语法进行后续处理: ``` import { getUser } from './api.js' getUser(123) .then(response => console.log(response.data)) .catch(error => console.error(error)) ``` 值得注意的是,由于axios发送的http请求是异步的,因此在处理返回结果时需要使用Promise的语法。同时,在进行二次封装时,应注意不要将敏感信息暴露到前端代码中,以保护用户隐私安全。 希望我的回答能够对您有所帮助,如有其他问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值