AngularJs 下拉列表未发送选定的默认值

AngularJs Dropdown not sending the selected default value

我在 中有一个 AngularJs 下拉菜单,我设置了一个根据某些条件选择的值。 下拉菜单正常工作,但唯一的问题是,如果我不对其执行任何操作,如果我提交表单,我将不会收到动态选择的默认值。

    <!-- Payment Page -->
    <div class="form-group">
       <label class="control-label">Payment Page *</label>
       <select name="payment_page" class="form-control" ng-model="invoice_data.form_data.payment_page">
          <option ng-repeat="p_page in invoice_data.data.payment_pages" value="{{ p_page.id }}" ng-selected="(p_page.id === invoice_data.form_data.payment_page || p_page.default)">
          {{ p_page.name }}
          </option>
       </select>
   </div>
   <!-- /End Payment Page -->

在 inspect 元素中,下拉菜单看起来不错,选项有它的值等等,但是在提交表单后我没有收到选定的值。 如果我更改下拉选择并提交表单,我会收到该值,但对于默认值。

我不知道 php。但我可以猜到,这是因为当你的下拉菜单保持不变时,ngModel 没有任何价值。为此,当您提交表单时,您不会获得默认值。 解决方案

您可以在控制器或 html 上执行两种方式:

1) 在 html 使用 ng-init 指令将 ng 模型初始化为默认值。

  ng-init="invoice_data.form_data.payment_page = p_page.default ">

2) 在控制器中,当您的表单提交时检查 ngModel 中的空值或未触及的 select 下拉列表,如果它为空,则添加您的默认值。

感谢珍妮的时间和回复... 我在控制器中这样做了:

angular.forEach(response.data.payment_pages, function(value, key) {
  if (value.default) {
    $scope.invoice_data.form_data.payment_page = value.id;
  }
});