javascript - vuejs - .bind(this) 没有按预期工作
问题描述
演示:https ://codesandbox.io/s/23959y5wnp
所以我正在传递一个函数并想重新绑定this
我.bind(this)
在函数上使用的所以返回的数据仍然基于原始组件。我错过了什么?
预期: 应在按钮单击Test2
时打印出来Test2
代码:
应用程序.vue
<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>
测试1.vue
<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>
测试2.vue
<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>
解决方案
推荐阅读
- java - 单击时,可展开列表视图不会展开列表。我试图设置可点击但仍然点击列表并没有展开任何东西
- arrays - 基于嵌套值从散列数组中干净地删除散列
- python - Keras 是否支持模型内的 if 语句?
- firebase - PERMISSION_DENIED:权限缺失或不足
- c# - DotNetBrowser:在任何查找位置都找不到包含二进制文件的程序集
- php - laravel livewire 如何调用函数值
- javascript - 在 Angular 9 中更新 CLI 生成的材料表的内容
- sql - 在 SQL Server 中:使用每个日期作为自己的列创建数据透视表
- python - 在networkx中找到最长的圆路
- java - 使用 ProcessBuilder 结果填充 JavaFX listView