AngularJs Dropdown未发送所选的默认值

时间:2017-05-12 05:43:23

标签: php angularjs set dropdown selected

我有一个AngularJs下拉列表,我根据某些条件设置了一个值。 下拉工作应该如此,但唯一的问题是,如果我不对其做任何操作,如果我提交表单,我将不会收到以dinamically方式选择的默认值。

    <!-- 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元素中,下拉列表看起来不错,选项具有它的值等等,但是在提交表单后我没有收到所选的值。 如果我更改,下拉选择并提交表单,我会收到值,但默认情况下为1。

2 个答案:

答案 0 :(得分:1)

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

你可以在控制器或html上做2路:

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

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

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

答案 1 :(得分:1)

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

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