在VueJS中评估数组中的数组

时间:2017-04-20 18:25:10

标签: javascript arrays if-statement vue.js

我正在使用VueJs并将使用逻辑根据if语句的结果将用户带到三个组件之一。从其父组件引入此子组件的属性是userResultData。我的想法是,它中的数据传递了userResultData数组的属性,并且一旦我可以让控制台显示事物处理它们应该的方式,就会移动到更多的组件中。在userResultData内部,它还有两个阵列,员工或经理。用户可以在员工或经理或两者中拥有值。如果employees数组中只有值,则会产生一个操作。这同样适用于经理人。如果两者都有一个值,则它是最终条件,因为它具有两者。

但是,我收到了一个有趣的错误,所以显然有些不对劲。很确定它与我如何传递args有关。我对JavaScript和这个框架比较陌生,所以如果有人不介意我可以修复的简单解释,我们非常感激。 userResultArrayData是我需要在这里传递的arg,对吧?如果是这样,我将如何通过它?

这就是我所拥有的:

import EmployeeAndManagerUser from '../Organization/EmployeeAndManagerComponent.vue';
import EmployeeUser from '../Organization/EmployeeComponent.vue';
import ManagerUser from '../Organization/ManagerComponent.vue';

export default {
    props: ['userResultData'],
    components: {
        ManagerUser,
        EmployeeUser,
        EmployeeAndManagerUser
    },
    data() {
        return {
            userResultArrayData: null,
            managerUser: null,
            employeeUser: null,
            employeeAndManagerUser: null
        }
    },
    methods: {
        evaluateTypeOfUser(){
            if (Object.keys(this.managers).length === 0 && Object.keys(this.employees).length !== 0) {
                console.log('result matched with employee ');
            }
            else if (Object.keys(this.managers).length !== 0 && Object.keys(this.employees).length === 0) {
                console.log('result matched with manager ');
            }
            else {
                console.log('result is both employee and manager');
            }
        }
    }
}

错误: 未捕获的TypeError:无法将undefined或null转换为object     在Function.keys()     在VueComponent.evaluateTypeOfUser(app.js:38281)

1 个答案:

答案 0 :(得分:0)

子组件不了解managersemployees,它只知道userResultData。您需要在managers函数中明确设置employeesdata属性。

data() {
    return {
        userResultArrayData: null,
        managerUser: null,
        employeeUser: null,
        employeeAndManagerUser: null,
        employees: this.userResultData.employees,
        managers: this.userResultData.managers,
    }
},

或者只是正确引用属性

Object.keys(this.userResultData.managers)