问题
In my Laravel + Vue.js SPA (Single Page Application), I am using BootstrapVue and VeeValidate.
In EditProfile.vue
file, I want to access the data property namely default_country_code
from an attribute in the template namely default_country_code
.
I can achieve it by using props
i.e: having a data attribute in Vue root instance and then using it in the template with the help of props
in EditProfile.vue
file.
But I want to use it in the template without using any props
. Because if I use props
, all the props that I need to use in template sections in different pages have to be defined in Vue root instance . And when those data attributes that will be used as props
come from database, I have to make multiple queries in DB in the corresponding Laravel controller method and use them in Vue root instance. And this approach does not seem to be any loosely coupled architecture to me.
In EditProfile.vue
page, I have :
<template>
<ValidationProvider vid="name" rules="required" name="name" v-slot="{ valid, errors }">
<b-form-group
label="Name:"
label-for="exampleInput1"
>
<b-form-input
v-model="name"
default-country-code="default_country_code"
:state="errors[0] ? false : (valid ? true : null)"
placeholder="Enter Name"
></b-form-input
<b-form-invalid-feedback id="inputLiveFeedback">{{ errors[0] }}</b-form-invalid-feedback>
</b-form-group>
</ValidationProvider>
</template>
export default {
name: "EditProfile",
props: {
},
data: () => ({
name:"Mr. XYZ",
default_country_code:"FR"
})
};
How can I use default_country_code
in template attribute without using any props
by taking help of the Vue root instance as I said before ?
回答1:
Assuming you're trying to access the value from a child component, you can access Vue's state. For example let someVar = $parent.default_country_code
.
That said, using props
or something like vuex
to store global state, would be better practice.
来源:https://stackoverflow.com/questions/59458265/vue-js-access-data-property-from-within-template-without-using-props-in-vue-fi