gpt4 book ai didi

javascript - 在本地组件 vuejs 中访问 Prop 值

转载 作者:搜寻专家 更新时间:2023-10-30 22:46:50 24 4
gpt4 key购买 nike

我有一个包含两个本地组件的 Vue 实例,这两个组件都具有来自 Vue 实例数据的 props。但是,当我尝试从其中一个本地组件访问 props 值时,该值未定义。

这是代码

var custom_erp_widget = new Vue({
el : '#custom-erp-widgets',
data : {
showContainerHeader : false,
currentModuleName : 'foo',
currentModuleFormID : '5',
currentModuleReportID : '6'
},
components : {
'custom-erp-header' : {
template : '<div class="col-12" id="custom-erp-widget-header">'+
'{{ currentModuleName.toUpperCase() }}'+
'</div>',
props : ['currentModuleName']
},
'custom-erp-body' : {
template : '<div class="col-12" id="custom-erp-widget-body">'+
'</div>',
props : ['currentModuleFormID','currentModuleReportID'],
// for emitting events so that the child components
// like (header/body) can catch and act accordingly
created() {
var _this = this;
eventHub.$on('getFormData', function(e) {
if(e == 'report'){
console.log(_this.$props);

_this.getReportData();
}
else if(e == 'form'){
console.log(_this.$props);
_this.getFormData();
}

});

},

methods : {
// function to get the form data from the server
// for the requested form
getFormData : function(){
var _this = this;
//here the logs are returinig undefined
//but it is having values in the data from the root Instance
console.log(_this.$props.currentModuleFormID);
console.log(_this.currentModuleFormID);

axios
.get('http://localhost:3000/getFormData',{
params: {
formID: _this.currentModuleFormID + 'a'
}
})
.then(function(response){

console.log(response);

})
}

}

}
},

})

这是组件的HTML用法

<div class="row" id="custom-erp-widgets" v-show="showContainerHeader">

<custom-erp-header :current-module-name='currentModuleName'></custom-erp-header>
<custom-erp-body></custom-erp-body>

</div>

如何在本地组件函数中访问 props 值?

Ouptput

最佳答案

看来问题出在你的prop names因为 Vue 期望 DOM 模板中的 prop 名称采用 kebab-cased 形式。

HTML attribute names are case-insensitive, so browsers will interpretany uppercase characters as lowercase. That means when you’re usingin-DOM templates, camelCased prop names need to use their kebab-cased(hyphen-delimited) equivalents.

所以对于currentModuleFormID,它期望DOM模板中的current-module-form-i-d,而不是current-module-form-id你会期望。尝试将 currentModuleFormID 更改为 currentModuleFormId 并在末尾使用小写 d 并使用 current-module-form-id在模板中,我猜它应该可以工作。

var custom_erp_widget = new Vue({
el : '#custom-erp-widgets',
data : {
showContainerHeader : false,
currentModuleName : 'foo',
currentModuleFormId : '5',
currentModuleReportId : '6'
},
....

<custom-erp-body 
:current-module-form-id="currentModuleFormId"
:current-module-report-id ="currentModuleReportId">
</custom-erp-body>

关于javascript - 在本地组件 vuejs 中访问 Prop 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53000999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com