Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ng repeat、ng model和复选框获取数组中的位置_Javascript_Angularjs_Algorithm - Fatal编程技术网

Javascript 使用ng repeat、ng model和复选框获取数组中的位置

Javascript 使用ng repeat、ng model和复选框获取数组中的位置,javascript,angularjs,algorithm,Javascript,Angularjs,Algorithm,我必须问我的用户一系列问题并记录他们的回答。问题和可能答案的类型/数量各不相同,因此我试图以一种捕获所有问题类型的方式编写代码。两个问题是: 你喜欢什么规模的组织? 答案选项:1-10、11-50、51-200、201-500、501-1000、1001-5000、5001-10000、10000+ 你喜欢什么样的着装规范? 回答选项:休闲、商务休闲、正式 我需要向两个不同的用户提出相同的问题,并相互比较他们的回答,以确定%匹配。由于答案不同,我想在所选答案的数组中匹配位置。这样,我可以在视图中

我必须问我的用户一系列问题并记录他们的回答。问题和可能答案的类型/数量各不相同,因此我试图以一种捕获所有问题类型的方式编写代码。两个问题是:

你喜欢什么规模的组织? 答案选项:1-10、11-50、51-200、201-500、501-1000、1001-5000、5001-10000、10000+

你喜欢什么样的着装规范? 回答选项:休闲、商务休闲、正式

我需要向两个不同的用户提出相同的问题,并相互比较他们的回答,以确定%匹配。由于答案不同,我想在所选答案的数组中匹配位置。这样,我可以在视图中动态构建答案选项,并对所有问题使用相同的匹配算法。user1 answerArray[1,3,5]和user2 answerArray[2,3,5]回答3个匹配项,因此得一分。或者,user1 answerArray[false,false,true,true,true]和user2 answerArray[true,true,true,false,false]他们都选择了答案3,所以打1分

我目前的方法是尝试使用ng repeat为每个答案创建一个复选框,但我不确定如何确定选中哪个复选框。我尝试使用索引来获取repeat循环中的位置,但它不起作用,我不知道如何处理将其传递到submit函数中

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>

你喜欢什么规模的组织?
1-10:

您可以使用$index访问循环中当前项的位置。因此,您可以将模型值指定为
answerArray[$index]
,以便获得结果数组

input(type='checkbox' ng-model='answerArray[$index]' ng-change='checked(true, false)')

可以使用$index访问循环中当前项的位置。因此,您可以将模型值指定为
answerArray[$index]
,以便获得结果数组

input(type='checkbox' ng-model='answerArray[$index]' ng-change='checked(true, false)')

ng repeat
附带
$index
。例如:

 <li ng-repeat="page in pages">
            <a ng-class="{ testClass: $index == pageNumber }" ng-click="setPageNumber($index)">{{ page }}</a>
 </li>
  • {{page}

  • ng repeat
    附带
    $index
    。例如:

     <li ng-repeat="page in pages">
                <a ng-class="{ testClass: $index == pageNumber }" ng-click="setPageNumber($index)">{{ page }}</a>
     </li>
    
  • {{page}

  • 如何将结果传递到提交功能中?如果我有类似ng submit=answers()的东西,我猜参数将是1,2,3。。。若我用$index设置ng模型,那个么它不会注册为数字的字符串表示,而不是ng模型表示的var吗?那么我如何处理传入可变数量的参数呢?@user137717你能分享生成的html样本吗?我在文章末尾添加了一个编辑。我使用了一个小片段,因为我使用的是ng视图,我找不到一种方法来漂亮地打印元素选项卡中的输出。查看页面源仅显示我的布局模板。邮递员也一样。我如何将结果传递到我的提交功能中?如果我有类似ng submit=answers()的东西,我猜参数将是1,2,3。。。若我用$index设置ng模型,那个么它不会注册为数字的字符串表示,而不是ng模型表示的var吗?那么我如何处理传入可变数量的参数呢?@user137717你能分享生成的html样本吗?我在文章末尾添加了一个编辑。我使用了一个小片段,因为我使用的是ng视图,我找不到一种方法来漂亮地打印元素选项卡中的输出。查看页面源仅显示我的布局模板。邮递员也一样。