问题描述
我正在尝试规范JSON Schema JSON,特别是ngx-schema-form风格的JSON,例如binding_sample_schema.json。我还想将遍历路径用作实体的ID(因为似乎没有什么比这更一致和唯一了)。
我有一个mostly working solution in this stackblitz。
但是我必须使用笨拙的processstrategy
才能将父路径数据传递给子代:
{
idAttribute: (_value,parent,key) => {
const parentPath = parent.path || "";
if (parent.type === "array") {
return `${parentPath}/*`;
}
return `${parentPath}/${key}`;
},processstrategy: (value,key) => {
const parentPath = parent.path || "";
let path = `${parentPath}/${key}`;
let properties;
if (parent.type === "array") {
path = `${parentPath}/*`;
}
if (value.type === "object") {
properties = { ...value.properties,path };
}
return { ...value,path,properties };
}
}
特别是对于具有object
属性的properties
类型,子属性似乎无法从祖父母那里获取path
数据:
{
// Some nested object type property...
{
"type": "object","path": "/parentOfObject/keyOfObject" // <-- grandparent.path
"properties": { // <-- parent
"child1": {
// My parent is `properties`,but how do I access the `path` of the parent of my parent?
// To generate my path `${grandparent.path}/${key}`,i.e. `/parentOfObject/keyOfObject/child1`
},"child2": {
// ...
}
}
}
}
总体而言,该解决方案似乎很尴尬,并在path
上添加了残留的properties
属性。更好的解决方案是在将遍历路径ID传递给normalizr之前创建它吗?
感谢任何建议或替代解决方案。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)