Javascript 验证vue.js中的对象结构

Javascript 验证vue.js中的对象结构,javascript,validation,vue.js,Javascript,Validation,Vue.js,我目前正在vue.js中构建一个组件,我有点问题。你看,你可以给我的组件提供很多参数,所以为了清楚起见,我决定采用以下方法: <script type="text/javascript"> Vue.$noClientConf = { 'cmp_name': 'NoClient', 'cmp_title': 'Selection du client', 'url': 'ajax/getclient

我目前正在vue.js中构建一个组件,我有点问题。你看,你可以给我的组件提供很多参数,所以为了清楚起见,我决定采用以下方法:

<script type="text/javascript">
    Vue.$noClientConf = {
    'cmp_name':         'NoClient', 
    'cmp_title':        'Selection du client',
    'url':              'ajax/getclients.php',
    'parent':           null,
    'opt_texte':        'NomClientFR',
    'opt_valeur':       'NoClient',
    'cmp_max_options':  3,
    'opt_custom':       null,
    'data_size':        10,
    'data_style':       'btn btn-default btn-sm',
    'data_live_search': 'true'
    };
</script>

<div id="app">

  <div class="col-lg-2">
    <flex-select ref="NoClient" :conf="Vue.$noClientConf"></flex-select>
  </div>

</div>

<script type="text/javascript">
    var app = new Vue({
      el: "#app",
      data:{Vue}
    });
</script>
所以我的问题基本上是。。。是否有办法执行上述操作?

使用

否则,您可以将函数用作

FWIW,在一个示例中,我根本无法让
Vue.$noClientConf
工作。相反,我只是创建了一个默认对象

console.clear()
常量默认值={
“cmp_名称”:“无客户”,
“cmp_标题”:“客户选择”,
'url':'ajax/getclients.php',
“父级”:null,
“opt_texte”:“NomClientFR”,
“选择权”:“无客户”,
“cmp\u最大选项”:3,
“opt_custom”:null,
“数据大小”:10,
“数据样式”:“btn btn默认btn sm”,
“数据实时搜索”:“真”
};
组件(“flex select”{
道具:{
cmp_名称:{
类型:字符串,
必填项:true
},
cmp_标题:{
类型:字符串,
必填项:true
}
},
模板:`
{{cmp_name}{{cmp_title}}
`
})
新Vue({
el:“应用程序”,
数据:{
默认值
}
})

{{defaults}}
如果要使用,最好的做法是使用

例如:

示例组件所需的对象输入组件:

const obj={
区块1:{
图标:“示例”,
标题:“示例”,
内容:“示例”
},
区块2:{
图标:“示例”,
标题:“示例”,
内容:“示例”
}
};
具有自定义验证程序的组件:

导出默认值{
名称:“ExampleComponent”,
道具:{
数据:{
类型:对象,
验证器:(o)=>{
常量集=新集();
set.add(!!(o.block1&&o.block1.icon&&typeof o.block1.icon=='string');
set.add(!!(o.block1&&o.block1.title&&typeof o.block1.title=='string');
set.add(!!(o.block1&&o.block1.content&&typeof o.block1.content=='string');
set.add(!!(o.block2&&o.block2.icon&&typeof o.block2.icon=='string');
set.add(!!(o.block2&&o.block2.title&&typeof o.block2.title=='string');
set.add(!!(o.block2&&o.block2.content&&typeof o.block2.content=='string');
return!set.has(false);
},
},
颜色:{
类型:字符串,
验证器:值=>['black','white'].包括(值),
},
},
};

Vue的未缩小版本不知道自己的名称,因此您可能希望查看本文以了解解决方案。除此之外,您的解决方案非常有效。谢谢:)
props: {
        config.cmp_name: {
            type:String,
            required: true
        },
        config.cmp_title:{
            type:String,
            required: true
        }
    }
<flex-select ref="NoClient" v-bind="defaults"></flex-select>
props: {
  cmp_name: {
    type:String,
    required: true
  },
  cmp_title:{
    type:String,
    required: true
  }
}
props:{
  conf: {
    validator(config){
      let cmp_name = config.cmp_name && typeof config.cmp_name === "string"
      let cmp_title = config.cmp_title && typeof config.cmp_title === "string"
      return cmp_name && cmp_title
    }
  }
}