vue.js使用this[ ]()动态获取方法

49 篇文章 1 订阅
本文介绍了Vue中使用this[]()动态调用方法的技巧,以及this.$refs的用法。通过示例展示了如何在uni-drawer组件中定义和调用不同的方法,并利用this.$refs访问组件实例及其方法。强调了在DOM渲染完成后才能使用$refs,以及处理多个同名ref的情况。
摘要由CSDN通过智能技术生成

 使用this[ ]()写法,在[ ]内填入变量,即可调用不同的方法;this.$refs[ ]同样适用。

<uni-drawer ref="darwRef">
    <!-- 两个按钮都定义一个_close()方法,传不同参数区分 -->
    <view class="btn-group">
        <button class="btn" @click="_close('close')">取消</button>
        <button class="btn btn-primary" @click="_close('confirm')">确定</button>
    </view>
</uni-drawer>

    methods: {
        _close(type) {
            console.log(type, this[type]);
            this[type](); //该写法可以动态调用的confirm()方法和close()方法
        },
        confirm() {
            this.close();
            this.$emit("confirm", this.query);
        },
        // 关闭窗口
        close() {
            this.$refs.darwRef.close();  // 获取组件的close()方法
        },
    }

关于this.$refs的使用,先来介绍一下:

介绍:只要想要在Vue中直接操作DOM元素,就必须用ref属性进行注册。$refs与document.getElementById方法相比,会减少获取DOM节点的消耗。

用法:

  1. ref 加在普通的元素上,用this.$refs.名字  获取到的是dom元素;
  2. 加在子组件上,用this.$refs.名字    获取到的是组件实例 ,可以使用组件的所有方法 。例如this.$refs.darwRef 获取整个Vue实例中所有的引用,再去找darwRef 这个引用指向div的dom节点。

强调:

  1. ref 需要在DOM渲染完成后才会有,在使用的时候要先确保DOM已经渲染完成。比如在生命周期 mounted(){} 钩子中调用,或者在 this.$nextTick(()=>{}) 中调用。
  2. 如果ref 是循环出来的,有多个重名,那么ref的值会是一个数组 ,通过循环可以拿到单个的ref 。

如果有多个this.$refs需要动态被使用,就可以通过this.$refs[ ]这种方法在[ ]中传入要动态改变的名字。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue.js是一种流行的JavaScript框架,它可以帮助我们构建交互式的Web应用程序。而Axios是一个基于Promise的HTTP客户端,用于向服务器发送请求和获取响应。 当我们在Vue.js使用Axios动态获取Response中的数据时,我们需要进行以下步骤: 1. 在Vue.js组件中导入Axios并进行配置。可以使用`npm install axios`命令安装Axios,并在Vue组件中使用`import axios from 'axios'`进行导入。 2. 在Vue.js组件的方法使用Axios发送HTTP请求。我们可以使用Axios的`get`或`post`等方法发送GET或POST请求,并传递URL和请求参数等必要的信息。 3. 处理Axios返回的响应。Axios会返回一个Promise对象,可以使用`.then()`方法和`.catch()`方法来处理成功和失败的情况。在成功的情况下,我们可以通过`.data`属性来访问Response中的数据。 4. 使用获取的数据进行页面操作。一旦我们成功获取到Response中的数据,我们就可以在Vue.js组件中使用它们进行页面操作。你可以将数据绑定到Vue.js组件的模板中,或者在Vue.js的computed属性或methods方法使用它们。 以下是一个简单的示例代码,展示了如何使用Axios动态获取Response中的数据并进行操作: ``` <template> <div> <button @click="getData">获取数据</button> <ul> <li v-for="item in data" :key="item.id">{{ item.name }}</li> </ul> </div> </template> <script> import axios from 'axios'; export default { data() { return { data: [] }; }, methods: { getData() { axios.get('https://api.example.com/data') .then(response => { this.data = response.data; }) .catch(error => { console.error(error); }); } } }; </script> ``` 在上面的示例中,我们定义了一个`getData`方法,在该方法使用Axios发送GET请求来获取数据。当成功获取到数据时,我们将其赋值给`data`属性,并在页面上使用`v-for`指令显示数据的内容。 总的来说,使用Axios在Vue.js动态获取Response中的数据并进行操作相对简单。我们只需导入和配置Axios,发送HTTP请求,并在响应中处理和使用数据即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值