如何检查对象道具是否具有必需的对象属性

hid*_*dar 2 vue.js vuejs2

我将对象传递给我的组件为:

<foo :ob='object'></foo>
Run Code Online (Sandbox Code Playgroud)

在我的组件中,我有以下声明:

props: {
  ob: {
    type: Object,
    required: false, 
    default: {}
  }
}
Run Code Online (Sandbox Code Playgroud)

通常,期望传递的对象是这样的:

{

  bar: [],
  tar: {
    a: false,
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,如何在道具中确保传递的对象相似。我不需要检查值,我只需要知道它包含对象键,bar,tar和tar内部的属性,即:a

Ale*_*dis 5

您可以创建一个自定义验证器

props: {
  ob: {
    type: Object,
    required: false, 
    validator: function (obj) {
      return 'bar' in obj &&
      'tar' in obj &&
      obj.tar instanceof Object &&
      'a' in obj.tar
    }
  }
}
Run Code Online (Sandbox Code Playgroud)