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;
}
});
我在 中有一个 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;
}
});