angular 深层嵌套ngRepeat中获取radio的值和checkbox的值

做问卷调查功能项目时,使用了ng-repeat 里面嵌套 ng-repeat 然后获取radio的ng-model值时,发现只能获取到当前点到的radio的值;而点击checkbox的时候,angular报错 Error: [$rootScope:infdig],代码如下:

html结构:
<ul class="options_box" >
    <li ng-repeat="item in ques"  >                        
        <div class="opt" ng-repeat="nums in item.ques_item_options track by $index">
        <!-- 单选 -->
            <input type="radio"  class="magic-radio " name="{{nums.ques_item_option}}" 
                    value="{{item.ques_item_id}},{{nums.item_option_id}}" 
                    id="{{nums.item_option_id}}" 
                    title="{{nums.ques_item_option}}" 
                    ng-model="formdata.option_id[$index]" 
                    ng-if="item.ques_item_type==1" ng-required="required"
            />
        <!-- 多选 -->
            <input class="magic-checkbox" type="checkbox" name="{{nums.ques_item_option}}" 
                id="{{nums.item_option_id}}" 
                ng-model="formdata.item_option_id[$index]"  
                ng-true-value="'{{item.ques_item_id}},{{nums.item_option_id}}'"
                ng-false-value="'NO'" 
                ng-checked="formdata.item_option_id[$index]"  
                ng-if="item.ques_item_type==2" 
                ng-checked="nums.selected"
                ng-required="formdata.item_option_id[$index]"
            />
            <label for="{{nums.item_option_id}}">
                <p class="right">
                    <i ng-bind="nums.item_option_id"></i>
                    <i ng-bind="nums.ques_item_option"></i>
                </p>
            </label>
        </div>
    </li>
</ul>

数据结构:

$scope.ques = [
    {
        "ques_item_id":"2",
        "ques_item_type":"1",
        "ques_item_title":"111111",
        "ques_item_options":
             [
               {
                   "item_option_id":"2",
                   "item_option":"选项1",
                   "item_option_count":"1",
                   "item_option_voted":1
               },
               {
                   "item_option_id":"3",
                   "item_option":"选项2",
                   "item_option_count":"0",
                   "item_option_voted":2
               }
             ]
     },
     {
         "ques_item_id":"3",
         "ques_item_type":"2",
         "ques_item_title":"22222",
         "ques_item_options":
              [   
                  {
                       "item_option_id":"4",
                       "item_option":"选项1",
                       "item_option_count":"1",
                       "item_option_voted":1
                 },
                 {
                        "item_option_id":"5",
                        "item_option":"选项2",
                        "item_option_count":"1",
                        "item_option_voted":1
                 }
              ]
      },
      {
         "ques_item_id":"8",
         "ques_item_type":"1",
         "ques_item_title":"333333",
         "ques_item_options":
             [
                {
                    "item_option_id":"16",
                    "item_option":"选项1",
                    "item_option_count":"0",
                    "item_option_voted":2
                },    
                {
                    "item_option_id":"17",
                    "item_option":"选项2",
                    "item_option_count":"0",
                    "item_option_voted":2
                },
                {
                    "item_option_id":"18",
                    "item_option":"选项3",
                    "item_option_count":"0",
                    "item_option_voted":2
                }
             ]
  }

渲染页面截图:(单选题点击时只能拿到当前题的值,但是拿不到我已经点击过的值,是因为$index值?)

clipboard.png
这是多选题时报错,不知道是什么原因引起的,怀疑是因为$index引起,有什么方法可以解决这个问题?
clipboard.png

阅读 2.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进