为什么使用angularJs的选项显示第一个空选项?

时间:2017-09-03 20:33:16

标签: javascript html angularjs select option

当我重新加载页面时,第一个选项始终为空。我希望包含文本 Any Make 的选项成为默认选择选项。以下是我的观点代码:

  <select class="form-control" id="make" name="make" ng-init="Any Make" ng-model="makeSelected" ng-change="makeChanged()">
      <option value="0" selected="selected"> Any Make</option>
      <option ng-repeat="obj in makeData" value="{{obj.make_id}}"> {{ obj.make_name | uppercase }} </option>
  </select>

这是我的控制器代码:

.controller("homeController", function ($scope, makeData, $http) {

            $scope.makeData = makeData;

            $scope.makeChanged = function () {
                $http({
                    method: "GET",
                    url: "homeService.asmx/GetModelById"})
                    .then(function (response) {
                        $scope.modelData = response.data;
                })
            }
        })

2 个答案:

答案 0 :(得分:1)

删除ng-init并在模型中给出默认值

   $scope.makeSelected = 0;

以下是代码Click here

的小提琴

使用动态数据Click here

代码

答案 1 :(得分:0)

如果您不打算使用ngOptions,至少要删除那个ng-init,因为它不是一个函数,并且在控制器函数集中$scope.makeSelected = 0;

然后您可以删除该初始选项上的selected="selected",因为angularJS代码将处理所选内容。

参见下面的演示:

angular.module('app', [])
  .value('makeData', [{
    "make_id": 1,
    "make_name": "cat"
  },{
    "make_id": 2,
    "make_name": "dog"
  },{
    "make_id": 6,
    "make_name": "monkey"
  }])
  .controller("homeController", function($scope, makeData, $http) {
    //initialize the value associated with ng-model on the select list
    $scope.makeSelected = 0;
    $scope.makeData = makeData;

    $scope.makeChanged = function() {
      console.log('makeChanged');
      //$http() request removed because we don't have access outside this domain for AJAX requests.
    };
  });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="homeController">
  <select class="form-control" id="make" name="make"  ng-model="makeSelected" ng-change="makeChanged()">
      <option value="0"> Any Make</option>
      <option ng-repeat="obj in makeData" value="{{obj.make_id}}"> {{ obj.make_name | uppercase }} </option>
  </select>
  <div>makeSelected: {{makeSelected}}</div>
</div>