【问题标题】:Setting radio button in ng-repeat loop to $dirty when checked选中时将 ng-repeat 循环中的单选按钮设置为 $dirty
【发布时间】:2016-06-24 03:40:43
【问题描述】:

我遇到的问题如下:

我在 ng-repeat 中有 X 个单选按钮。首次加载时不会检查这些输入(视图 1)。然后,用户检查这些输入之一,然后移动到下一个视图(视图 2)。当我回到上一个视图时(视图 1)。使用ng-checked="{{dealer.selected}}" 检查输入。

问题是即使该字段被“检查”,验证类仍然是ng-pristine。如果预先检查(以编程方式),如何将其更改为脏?

代码:

                        <td>
                            <div class="selectedDealerInput">
                                <input ng-model="dealerCodeVal.name" id="dealerCode-{{dealer.dealerCode}}" name="dealerCode" value="{{dealer.dealerCode}}" ng-checked="{{dealer.selected}}" type="radio" ng-required="!dealerCodeVal.name">
                                <label for="dealerCode-{{dealer.dealerCode}}">{{dealer.dealerProfile.dealerName}} : {{dealer.selected}}</label>
                                <span data-ng-show="(dealerSelectForm.dealerCode.$dirty || dealerSelectForm.$submitted) && dealerSelectForm.dealerCode.$error.required" class="error">Please select at least one option</span>
                            </div> </td>

                    </tr>

【问题讨论】:

  • 你需要把上面的html放在一个带有名字的
    元素里面,然后用创建的表单的名字替换form。

标签: javascript angularjs validation


【解决方案1】:

在控制器中使用 $setDirty 函数:

$scope.form.dealerCode.$setDirty();

【讨论】:

  • 我奥斯汀,它不工作。无法读取未定义的属性“dealerCode”
  • 您需要将上面的 html 放在带有名称的
    元素中,然后将 form 替换为创建的表单的名称。 $scope.nameOfForm.dealerCode.$setDirty();
【解决方案2】:

从您的控制器:

$scope.form.dealerCode.$dirty = true;

【讨论】:

  • 我知道,它不工作。无法读取未定义的属性“dealerCode”
  • s/form/dealerSelectForm
猜你喜欢
  • 2013-11-29
  • 2015-06-14
  • 2022-11-11
  • 1970-01-01
  • 2016-09-27
  • 1970-01-01
  • 2015-06-27
  • 2015-05-07
  • 2015-02-17
相关资源
最近更新 更多