从另一个组件覆盖 VueJS 组件方法
Override VueJS component methods from another component
我试图从另一个组件覆盖 VueJS 组件方法。
这里我想覆盖另一个 VueJS 文件中的 checkForm
方法。
在 ./src/components/auth_form.vue 中:
<script lang="ts">
import Vue from 'vue'
export default Vue.extend({
props: {...},
methods: {
checkForm: function(e: any) {
console.log('Please override this method!')
}
}
})
</script>
我想从 ./src/views/signup.vue 覆盖这个方法:
<script lang="ts">
import Vue from 'vue'
import authForm from '../components/auth_form.vue'
export default Vue.extend({
name: 'signup',
components: {
authForm
},
data: function() {...},
methods: {
// This does not override the method above!
checkForm: function(e: any) {
console.log("success")
// Reset the form
this.signupForm = {} as SignupForm
}
}
})
</script>
是的,它们不会覆盖,因为这 2 个函数在 2 个不同的范围内。他们可以有相同的名字并且独立工作。为了做你想做的事,你必须把 auth_form
的 checkForm 函数放在它的 props 里面。
所以 auth_form
:
props: {
checkForm: {
type: Function,
default(e) {
console.log('Please override this method!')
}
}
}
然后在signup.vue
中调用它
<auth-form :check-form="checkForm" /> //pass parent's method into children props
methods: {
checkForm() {
console.log("success") // this will override the default one
}
}
我试图从另一个组件覆盖 VueJS 组件方法。
这里我想覆盖另一个 VueJS 文件中的 checkForm
方法。
在 ./src/components/auth_form.vue 中:
<script lang="ts">
import Vue from 'vue'
export default Vue.extend({
props: {...},
methods: {
checkForm: function(e: any) {
console.log('Please override this method!')
}
}
})
</script>
我想从 ./src/views/signup.vue 覆盖这个方法:
<script lang="ts">
import Vue from 'vue'
import authForm from '../components/auth_form.vue'
export default Vue.extend({
name: 'signup',
components: {
authForm
},
data: function() {...},
methods: {
// This does not override the method above!
checkForm: function(e: any) {
console.log("success")
// Reset the form
this.signupForm = {} as SignupForm
}
}
})
</script>
是的,它们不会覆盖,因为这 2 个函数在 2 个不同的范围内。他们可以有相同的名字并且独立工作。为了做你想做的事,你必须把 auth_form
的 checkForm 函数放在它的 props 里面。
所以 auth_form
:
props: {
checkForm: {
type: Function,
default(e) {
console.log('Please override this method!')
}
}
}
然后在signup.vue
<auth-form :check-form="checkForm" /> //pass parent's method into children props
methods: {
checkForm() {
console.log("success") // this will override the default one
}
}