Vue Props 不适用于子组件

新手上路,请多包涵

我有已登录用户数据的根元素和用户配置文件组件,我将登录用户数据作为道具传递。

但是当我尝试在子组件中调用用户对象属性时,它会抛出未定义的错误。我在子组件中看不到任何价值。

应用程序.js

 Vue.component("usersmanagment", require("./components/usersmanagment"));

const app = new Vue({
    el: "#app",
    components: {
        'v-select': vSelect
    },
    data() {
        return {
            AuthorizedUser: {
                Email : "",
                FirstName : "",
                LastName : "",
                CreatedUtcDateTime : "",
                IsActive : ""
            }
        };
    },
    mounted() {
        let vm = this;
        vm.getAuthorisedUserProfile();
    },
    methods: {
        getAuthorisedUserProfile() {
            let vm = this;
            // just return auth user data
    }

});

比在子组件上我正在传递道具

module.exports = {
    props : ["AuthorizedUser"],

};

在我的视图文件中,我是 Asp.Net MVC

 <usersmanagment inline-template>
        <input type="text" class="form-control" v-model="AuthorizedUser.FirstName">
</usersmanagment>

我可以在 vue chrome 开发工具中看到授权用户已更新,但其值未在子组件上更新。

原文由 Epistemologist 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 562
2 个回答

这就是解决我的问题的原因。我必须将道具与子模板绑定。

 <profile inline-template v-bind:authorized-user="authorizedUser">
        <div>

            <input type="text" v-model="authorizedUser.FirstName" class="form-control">
        </div>

    </profile>

原文由 Epistemologist 发布,翻译遵循 CC BY-SA 3.0 许可协议

你没有在这里包含它,但我的猜测是你正在使用 camelCase 传递道具,但你需要使用 kebab-case 传递它(参见: camelCase vs kebab-case ) .所以请确保你正在做:

 <child-component :authorized-user="AuthorizedUser"></child-component>

原文由 craig_h 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题