AngularJS:无法读取嵌套ng-repeat中的单选按钮值

时间:2016-03-10 17:05:59

标签: javascript angularjs angularjs-scope angularjs-ng-repeat ng-repeat

我正在创建一个类似于网格的日历,它使用两个ng-repeats生成1到31之间的数字。网格的每个元素都是一个单选按钮,其值我想进入控制器。

例如,用户点击' 12',该值会存储在某处,点击提交后会传播到控制器。

问题是我无法读取所检查元素的值。

代码:

   <div data-toggle="buttons">
            <div class="row" ng-repeat="date in dates track by $index" ng-if="$index % 5 == 0">
                  <label ng-class="{'btn-online': isOnline(i+1), 'btn-paper': isPaper(i+1)}" class="singleDate btn btn-default col-no-gutter col-xs-2 letter-box" 
                       ng-repeat="i in [$index, $index + 1, $index + 2, $index + 3, $index + 4]" 
                       ng-if="dates[i] != null">
                            <input type="radio" name="dates" id="date-{{i+1}}" ng-model="$parent.dueDate" ng-value="{{date[i]}}" class="date radio radio-primary">{{dates[i]}} 
                  </label>
            </div> <!--row div ends here -->
            {{dueDate}} <!--no output here as well-->
        </div> 


        <button type="submit" ng-click="changeDueDate(dueDate)" class="btn btn-block btn-default">Change Payment Due Date</button>

1 个答案:

答案 0 :(得分:0)

不要与原始人结合

<!-- instead bind to objects -->

<button type="submit" ng-click="changeDueDate(obj.dueDate)">
  Change Payment Due Date
</button>

每个ng-repeatng-if都会添加新的范围和层次结构。而不是计算层次结构的级别,使dueDate成为对象的属性obj.dueDate。然后原型继承将正确地发挥它的魔力。有关详细信息,请参阅The Nuances of Scope Prototypal Inheritance