繁体   English   中英

选择`<option> ` 来自控制器的值`<select ng-options> `

[英]Selecting `<option>` value from controller for `<select ng-options>`

<select
      class="form-control input-md
      availabiltyDatesInput pull-left"
      name="statusModel"
      autocomplete="off"
      id="statusModel"
      ng-options="alertStatus.value as alertStatus.text for alertStatus in alertStatuses"
      ng-model="statusModel">
 </select>

我有一个带有选项的选择。 我需要预先填充这个选择的值。

我正在尝试在控制器中设置 ng-model:

angular.module("app.alerts")
.controller("alertsCtrl", function ($scope, CarmateCommonApiSvc, $uibModal) {

     getLookupsData();

     var alertStatuses = [];

     function getLookupsData() {
        alertStatuses = [];

        CarmateCommonApiSvc.getLookups().then(function (res) {
            if (res.code != 0) return;
            _.each(res.data.allLookups, function (item, index, arr) {

                if(item.name == 'AlertStatus'){
                    alertStatuses.push(item);
                }
            });
            $scope.alertStatuses = alertStatuses;                
            $scope.statusModel = alertStatuses[0];
        })
     }
});

但它不起作用。 我是 AngularJs 的新手

您需要使用如下值设置 ng-model:

$scope.statusModel = alertStatuses[0].value;

有关更多信息和示例,请查看此处:链接

也许您应该先检查数组是否有任何项目:

if(alertStatuses.length > 0){
    $scope.statusModel = alertStatuses[0].value;
}

statusModel应该只设置为单个值而不是完整的对象alertStatuses[0] 因此,更新您的代码,如:

$scope.statusModel = alertStatuses[0].value || 0;

您实际上可以滥用ng-init指令。

<select
  class="form-control input-md availabiltyDatesInput pull-left"
  name="statusModel"
  autocomplete="off"
  id="statusModel"
  ng-options="alertStatus.value as alertStatus.text for alertStatus in alertStatuses"
  ng-model="statusModel"
  ng-init="statusModel = alertStatuses[0]"
>
</select>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM