在ready()中访问道具属性
Accessing prop properties in ready()?
我在控制台得到来自ready()
的undefined
我正试图将值从this.users.name
复制到this.userForm.name
我做错了什么?
<概要文件用户组件/strong>
<template>
<input type="text" v-model="userForm.name">
</template>
<script>
export default {
props: ['users'],
ready() {
this.userForm.name = this.users.name;
console.log(this.users.name);
},
data: function () {
return {
userForm: {
name: '',
email: '',
errors: [],
},
}
},
}
</script>
HTML:<profile-user :users="users"></profile-user>
编辑:
父值
const app = new Vue({
el: 'body',
data: {
users: {}
},
ready: function() {
this.fetchUser();
},
methods: {
fetchUser: function() {
this.$http.get('/api/user').then(response => this.users = response.json());
}
},
});
ready
在Vue 2.0中已弃用。你需要使用mounted
而不是ready()
从1迁移的参考。x: https://vuejs.org/guide/migration.html ready-replaced
另一个潜在的问题:你的users
是一个数组项吗?如果它是一个对象,那么您可以考虑将其命名为user_info
。但是,如果您将单个用户信息传递给users
,并在其上添加name
参数,那么您的代码应该在技术上工作。
如果你还没有vue-devtools,现在可能是在开发控制台安装和调试的好时机:https://github.com/vuejs/vue-devtools
EDIT:在问题更改后修改
感谢提供Parent组件。我想我现在看到问题了:
假设您的$http
调用需要大约500毫秒才能完成。因此,父组件中的this.users
在前500毫秒内是未定义的。但是你的子组件(profile-user
)已经被创建了。它将尝试访问未定义的userForm.name
,直到服务器响应。
为避免此问题,您可以在profile-user
组件的模板中执行以下操作:
<template>
<div v-if="userForm">
<input type="text" v-model="userForm.name">
</div>
<div v-else>
Loading user data... Please wait
</div>
</template>
在您的开发环境中,服务器响应可能不会花费太多时间。但是this.$http
调用仍然是异步的——只有在profile-user
组件完全创建之后才会启动AJAX调用。
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- AngularJS-使用'true'属性
- 可以't使用JavaScript获取width属性
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- JavaScript Pub/Sub属性访问问题
- 从JavaScript访问struts操作中的属性
- 是否可以从父类访问子类的属性
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何在选项卡上定义属性'的主窗口对象
- 锚点元素的href属性自动更改
- jQuery最近父级的数据属性选择器
- 用于'魔术串'属性