我必须向用户提出一系列问题并记录他们的回答。问题和可能答案的类型/数量有很多种,所以我试图以捕获所有问题类型的方式编写我的代码。两个示例问题是:
您更喜欢什么尺寸的组织? 答案选项:1-10,11-50,51-200,201-500,501-1,000,1,001-5,000,5,001-10,000,10,000 +
您更喜欢哪种着装要求? 答案选择:休闲,商务休闲,正式
我需要向两个不同的用户提出相同的问题,并将他们的回答相互比较以确定%匹配。由于答案不同,我想匹配所选答案的数组中的位置。这样,我可以在视图中动态构建答案选项,并对所有问题使用相同的匹配算法。 user1 answerArray [1,3,5]和user2 ansswerArray [2,3,5]回答3个匹配,所以给出一个观点。或者,user1 answerArray [false,false,true,true,true]和user2 answerArray [true,true,true,false,false]他们都选择了答案3,所以给出一个观点。
我目前的方法是尝试使用ng-repeat为每个答案创建一个复选框,但我不确定如何确定选中哪个复选框。我尝试使用索引来获取重复循环中的位置,但它不起作用,我不知道如何处理将其传递到我的提交函数。
form.form-horizontal(ng-submit='answer(not sure what to do with params here)')
div.form-group(ng-repeat='answer in questionData.answers')
label.col-xs-3 {{answer}}:
input(type='checkbox' ng-model='index' ng-change='checked(true, false)')
我已经阅读了关于组合ng-repeat和ng-model的其他一些答案,我可以使数组成为一个对象数组,然后将ng-model设置为一个对象属性。这似乎是不必要的数据转换。我很乐意听到其他解决方案。
页面如下所示:
<div ng-view="" class="ng-scope">
<div class="ng-binding ng-scope">What size organization do you prefer?</div>
<form ng-submit="answer(1,2,3,4,5,6,7,8)" class="form-horizontal ng-pristine ng-valid ng-scope"><!-- ngRepeat: answer in questionData.answers -->
<div ng-repeat="answer in questionData.answers" class="form-group ng-scope">
<label class="col-xs-3 ng-binding">1-10:
<input type="checkbox" ng-model="$index" ng-change="checked(true, false)" class="ng-pristine ng-untouched ng-valid"></label>
答案 0 :(得分:3)
您可以使用$ index访问循环中当前项的位置。因此,您可以将模型值指定为answerArray[$index]
,以便获得结果数组
input(type='checkbox' ng-model='answerArray[$index]' ng-change='checked(true, false)')
答案 1 :(得分:1)
ng-repeat
附带$index
。例如:
<li ng-repeat="page in pages">
<a ng-class="{ testClass: $index == pageNumber }" ng-click="setPageNumber($index)">{{ page }}</a>
</li>