首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >vuejs -.bind(此)不能按预期工作

vuejs -.bind(此)不能按预期工作
EN

Stack Overflow用户
提问于 2019-02-24 17:34:49
回答 1查看 1.6K关注 0票数 2

演示:https://codesandbox.io/s/23959y5wnp

所以我传递了一个函数,并且希望重新绑定this,所以我在函数上使用了.bind(this),但是返回的数据仍然是基于原始组件的。我遗漏了什么?

期望:Test2应该按一下按钮打印出Test2

代码:

App.vue

代码语言:javascript
运行
复制
<template>
  <div id="app">
    <img width="25%" src="./assets/logo.png" /><br />
    <Test1 :aFunction="passThis" /> <Test2 :aFunction="dontPassThis" />
  </div>
</template>

<script>
import Test1 from "./components/Test1";
import Test2 from "./components/Test2";

export default {
  name: "App",
  components: {
    Test1,
    Test2
  },
  data() {
    return {
      value: "original"
    };
  },
  methods: {
    dontPassThis($_) {
      console.log(this.value);
    },
    passThis($_) {
      console.log($_.value);
    }
  }
};
</script>

<style>
#app {
  font-family: "Avenir", Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

Test1.vue

代码语言:javascript
运行
复制
<template>
  <div>Test1 <button @click="() => aFunction(this)">click me</button></div>
</template>

<script>
export default {
  data() {
    return {
      value: "Test1"
    };
  },
  mounted() {
    this.aFunction(this);
  },
  props: {
    aFunction: {
      required: true,
      type: Function
    }
  }
};
</script>

Test2.vue

代码语言:javascript
运行
复制
<template>
  <div>
    Test2

    <button @click="testFunction">click me</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      testFunction: null,
      value: "Test2"
    };
  },
  created() {
    this.testFunction = this.aFunction.bind(this);
  },
  props: {
    aFunction: {
      required: true,
      type: Function
    }
  }
};
</script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-25 07:39:18

在初始化时Vue已经是绑定组件的方法函数的绑定不能超过一次。 (后续绑定没有影响)。

因此,当App初始化时,Vue将App实例绑定为其dontPassThis方法的上下文。App通过一个道具将dontPassThis“传递”给Test2Test2随后试图绑定它,实际上它什么也不做。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54854606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档