示例 jsFiddle
我仍然倾向于 knockout.js,所以请随时提出改进我的代码的建议
我ko.mapping
用来从包含以下结构的 JSON 字符串生成我的视图模型:
questions: [
answer: "whetever the user enters",
controlType: "the type of input to display",
lookupItems: "anything that will go into a SELECT input",
modalSection: "if this question is a modal, then all modal questions will go here"
]
我已经设法让一切正常,并且通过遵循这个处理模态的示例,设法让我的模态和相应的问题按照我的意愿弹出。
然而,我的问题是如何从这个模式中保存多个结果?用户应该能够多次调出模式并添加他们想要的尽可能多的信息 - 然后应该在问题下方显示。
这是我到目前为止所尝试的:
将.submissions
数组添加到modalSection
扩展 my.modalSection
使其上有一个提交集合,因此当用户在模式上单击“确定”时,它会将当前模式的副本添加到此集合中,然后应显示在我的表中:
<!-- ko foreach: modalSection.submissions -->
<table>
<tbody data-bind="foreach: questions">
<tr>
<td data-bind="text: text"></td>
<td data-bind="text: answer"></td>
</tr>
</tbody>
</table>
<!-- /ko -->
然而,这似乎不起作用,我的桌子仍然无人居住。即使那样,如果我确实让这个工作,我什至会朝着正确的方向前进 - 我不会只是存储modalSection
多次相同的可观察实例吗?
谁能指出我正确的方向,也许看看提供的小提琴中的代码,并就我可以改进的地方以及如何到达我想去的地方给出任何指示?
编辑 1
为了更好地理解我想要实现的目标,这是一个场景。
说有两个问题:
- 你曾经拥有过汽车吗?
- 请提供您拥有的所有汽车的详细信息,包括品牌、型号和颜色。
所以我的第一个问题是一个下拉列表(其中lookupItems
是 [Yes] 和 [No])。第二个问题需要更多细节,因此它使其成为模态的主要候选者,因此该问题将有一个按钮作为其输入,可能标记为 [添加汽车]。
这将提出一个带有问题的模态(具有控制类型等,就像非模态问题一样)[汽车的品牌是什么?],[型号是什么?]和[颜色是什么?]。填充模式后,结果将填充到某处(如表格),并且 [添加汽车] 按钮将再次可用以添加 N 更多详细信息。