我已经搜索了谷歌,在这个上面什么也找不到。

我有这个代码。

<select ng-model="somethingHere" 
        ng-options="option.value as option.name for option in options"
></select>

有这样的数据

options = [{
   name: 'Something Cool',
   value: 'something-cool-value'
}, {
   name: 'Something Else',
   value: 'something-else-value'
}];

输出是这样的。

<select ng-model="somethingHere"  
        ng-options="option.value as option.name for option in options" 
        class="ng-pristine ng-valid">

    <option value="?" selected="selected"></option>
    <option value="0">Something Cool</option>
    <option value="1">Something Else</option>
</select>

如何将数据中的第一个选项设置为默认值,从而得到这样的结果呢?

<select ng-model="somethingHere" ....>
    <option value="0" selected="selected">Something Cool</option>
    <option value="1">Something Else</option>
</select>

当前回答

使用select和ngOptions并设置默认值:

更多ngOptions使用示例请参见ngOptions文档。

angular.module('defaultValueSelect', []) .controller('ExampleController', ['$scope', function($scope) { $scope.data = { availableOptions: [ {id: '1', name: 'Option A'}, {id: '2', name: 'Option B'}, {id: '3', name: 'Option C'} ], selectedOption: {id: '2', name: 'Option B'} //This sets the default value of the select in the ui }; }]); <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular.min.js"></script> <body ng-app="defaultValueSelect"> <div ng-controller="ExampleController"> <form name="myForm"> <label for="mySelect">Make a choice:</label> <select name="mySelect" id="mySelect" ng-options="option.name for option in data.availableOptions track by option.id" ng-model="data.selectedOption"></select> </form> <hr> <tt>option = {{data.selectedOption}}</tt><br/> </div>

plnkr.co

关于带有angular数据绑定的HTML SELECT元素的官方文档。

通过ngModel解析/格式化将select绑定到一个非字符串值:

(function(angular) { 'use strict'; angular.module('nonStringSelect', []) .run(function($rootScope) { $rootScope.model = { id: 2 }; }) .directive('convertToNumber', function() { return { require: 'ngModel', link: function(scope, element, attrs, ngModel) { ngModel.$parsers.push(function(val) { return parseInt(val, 10); }); ngModel.$formatters.push(function(val) { return '' + val; }); } }; }); })(window.angular); <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.1/angular.min.js"></script> <body ng-app="nonStringSelect"> <select ng-model="model.id" convert-to-number> <option value="1">One</option> <option value="2">Two</option> <option value="3">Three</option> </select> {{ model }} </body>

plnkr.co

其他的例子:

angular.module('defaultValueSelect', []) .controller('ExampleController', ['$scope', function($scope) { $scope.availableOptions = [ { name: 'Apple', value: 'apple' }, { name: 'Banana', value: 'banana' }, { name: 'Kiwi', value: 'kiwi' } ]; $scope.data = {selectedOption : $scope.availableOptions[1].value}; }]); <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular.min.js"></script> <body ng-app="defaultValueSelect"> <div ng-controller="ExampleController"> <form name="myForm"> <select ng-model="data.selectedOption" required ng-options="option.value as option.name for option in availableOptions"></select> </form> </div> </body>

斯菲德尔

其他回答

如果你想确保你的$scope。当你的视图初始化时,somethingHere的值不会被覆盖,你会想要合并(somethingHere = somethingHere || options[0].value) ng-init中的值,如下所示:

<select ng-model="somethingHere" 
        ng-init="somethingHere = somethingHere || options[0].value"
        ng-options="option.value as option.name for option in options">
</select>

使用下面的代码填充从您的模型中选择的选项。

<select id="roomForListing" ng-model="selectedRoom.roomName" >

<option ng-repeat="room in roomList" title="{{room.roomName}}" ng-selected="{{room.roomName == selectedRoom.roomName}}" value="{{room.roomName}}">{{room.roomName}}</option>

</select>

我会在控制器中设置模型。然后选择将默认为该值。例: html:

<select ng-options="..." ng-model="selectedItem">

Angular控制器(使用资源):

myResource.items(function(items){
  $scope.items=items;
  if(items.length>0){
     $scope.selectedItem= items[0];
//if you want the first. Could be from config whatever
  }
});

在你的角控制器中试试这个…

$somethingHere = {name: 'Something Cool'};

你可以设置一个值,但你使用的是复杂类型,angular会在视图中搜索key/value来设置。

如果不奏效,试试这个: ng-options = "选项。值为option.name的选项跟踪option.name"

    <!--
    Using following solution you can set initial 
default value at controller as well as after change option selected value shown as default.
    -->
    <script type="text/javascript">
      function myCtrl($scope)
        {
          //...
            $scope.myModel=Initial Default Value; //set default value as required
          //..
        }
    </script>
    <select ng-model="myModel" 
                ng-init="myModel= myModel"
                ng-options="option.value as option.name for option in options">
        </select>