我有一个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。
答案 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;
}
});