【发布时间】:2017-01-25 19:41:13
【问题描述】:
似乎是一项简单的任务,但我没有看到任何显示如何在 keystone.js 中动态地将字段添加到模型的内容。例如,我有一个“动物”模型,该动物可能属于任意数量的“栖息地”。我希望能够进入动物模型并有一个“分配栖息地”按钮,该按钮将创建一个新字段,将动物与栖息地相关联,根据需要多次。
【问题讨论】:
标签: mongodb pug keystonejs
似乎是一项简单的任务,但我没有看到任何显示如何在 keystone.js 中动态地将字段添加到模型的内容。例如,我有一个“动物”模型,该动物可能属于任意数量的“栖息地”。我希望能够进入动物模型并有一个“分配栖息地”按钮,该按钮将创建一个新字段,将动物与栖息地相关联,根据需要多次。
【问题讨论】:
标签: mongodb pug keystonejs
我认为这可能尚未写入文档,但您想要的是与 Habitats 模型的内联关系。
如果您将栖息地模型定义为正常,那么您的动物模型应包括以下内容:
Animal.add({
fieldA: { type: Types.Relationship, ref: 'Habitat', createInline: true },
});
【讨论】:
Habitat.add( function(_animal){ ...}); 不想粘贴整个内容,但基本上它在 Animals 中查找以确定要创建多少个字段。除了它只在编译时生成动物的数量之外,这是可行的。如果我启动服务器并添加新动物,它不会被添加到 Habitats,因为 Habitats 已经编译。有没有办法在管理 ui 中加载创建页面时重新编译模型?
many: true 添加到我的示例中,您将能够在一个字段中为动物添加任意数量的栖息地。抱歉,我在原始答案中忘记了这一点。在栖息地模型上,您可以制作它,以便您可以从另一侧查看关系(即查看分配给您正在查看的栖息地的所有动物)。这就是你要找的东西吗?
demo@keystonejs.com 密码demo。你可以拥有它,以便给你相关的动物?
好的,所以我最终做的是设置 keystone restful api 并使用在栖息地页面上运行的 3 个 ajax 请求。
ajax 请求 #1 – 获取所有动物的名称并使用 jquery 创建带有复选框的 div
ajax 请求 #2 – 使用包含该栖息地的每个检查动物的 id 的字符串修补栖息地项目
ajax 请求 #3 – 获取之前已为栖息地选择的活动动物,并在页面加载时预先选中它们的框
这样做是为当前打开的栖息地项目页面上的每个现有动物动态创建一个复选框。选中动物复选框会将其与当前开放的栖息地相关联。这将保存为为栖息地模型创建的字符串。
【讨论】: