【发布时间】:2014-02-04 09:51:30
【问题描述】:
我从一个 json 对象生成嵌套表单,比如 formObject 并将值绑定到 json 对象本身。我正在递归地解析值并在提交时提取实际数据,例如 dataObject。
我可以像这样以线性形式检索数据对象。 http://jsfiddle.net/DrQ77/80/.
<select ng-model="Answers[question.Name]" ng-options="option for option in question.Options">
与上述相反,http://jsfiddle.net/DrQ77/92/ 有一些递归。我已将 question 重命名为 element 以代表问题和部分。每个部分都可以有多个问题,再次,多个部分(这就是我所说的嵌套)。我最终想要的是具有任何嵌套级别的以下形式的对象。
Answers=[{
section:"Personal",
values:[{GenderQuestion:"Male"},{MaritalStatus:"Married"},{section:"Sub Personal",values:[{LivingWith:"Alone"}]}]
}, {
section:"Random",
values:[{ColorQuestion:"Red"}],
},
{SectionLess:"opt1"}]
这是一个解决方案,我可以在提交时得到它,$scope.Answers 来自第一个小提琴(我认为)不允许这种嵌套。但是当我必须更新现有的数据对象时,我觉得需要在渲染它之前将数据对象映射到 formObject 上,然后在提交时再次解析。 现在这不是 MVC,看起来并不优雅(由于递归),我认为这有一种“角度方式”。
有没有人试过这个并让它以更好的方式工作?我该如何解决?
【问题讨论】:
-
我不太明白你的方法有问题。也许是因为 JSFiddle 上的示例不够复杂 - 没有提到“递归”并且需要“在提交时再次解析” -
$scope.Answers不断更新并随时可以提交,因为Angular 的数据绑定。但也许是因为我太困了 :) 无论如何,如果你能把小提琴做得更精致(但不要太多 - hello-worldish 风格赞赏)以充分说明你当前方法的缺点,那就太酷了。 -
正如@vucalur 所说,我也不太明白问题出在哪里。我也没有在示例中看到任何递归。您能否更新您的问题并更好地解释您的问题是什么?
-
是的,试着解释一下!很抱歉第一次没有详细说明问题陈述,我对简洁有奇怪的想法!
-
@vucalur,现在问题更清楚了吗?还是我需要再详细说明一下?
标签: javascript angularjs model-view-controller