【发布时间】:2017-10-28 18:00:04
【问题描述】:
我正在尝试 VueJS,目的是逐步更新 jQuery 项目,但我在通过父组件传递数据的子组件中遇到道具问题。
我的父组件是
// parent_component.js
var parentData = {};
var parentComponent = Vue.component('parentComponent', {
data: function() {
return {
parentData: _parentData
}
},
delimiters: ['((', '))']
})
$.ajax({
url: '/someUrl/',
success: function(response) {
_parentData = response
}
我的子组件是:
// child_component.js
Vue.component('child-component', {
template: '<div>((data.someProp))</div>'
props: ['data'],
delimiters: ['((', '))']
})
我的 HTML 是:
// index.html
<parent-component inline-template>
<child-component v-bind:data="parentData"></child-component>
</parent-component>
当我在初始化 childComponent 后立即更新 _parentData 时,这一切都很好。但我实际上需要进行 Ajax 调用并更新 _parentData,它没有在 childComponent 中更新。
NB。我检查了 _parentData 对象是否存在于 Ajax 调用的回调中。
另外,我尝试将 Ajax 调用放在 childComponent 的 created 选项中,但这没有帮助。
我错过了什么?
更新
我想我犯了经典的初学者错误!如here、Vue cannot detect property addition 所述。因此,在进行异步调用之前,我需要在 _parentData 上定义 someProp 属性。
因此,如果我定义 var parentData = { someProp: '' }; 它将起作用。
【问题讨论】:
-
success: response => this.parentData = response.
标签: vue.js