AngularJS系列之select下拉選擇第一個選項為空白的解決辦法

風靈使發表於2018-12-30

今天給大家介紹一下AngularJS系列之select下拉選擇第一個選項為空白的解決辦法。
相信大家也經常遇到這種情況吧:在使用AngularJS中的select元件開發的時候,莫名其妙的第一個選項就變成空白了,而且選中其中非空白的地方,第一個選項的空白位置又奇妙的消失了。
今天就舉幾個例子給大家介紹一下種種情況的處理辦法,下面首先給出一個具體例子介紹一下:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
    </head>
    <body>
    <div ng-app="myApp" ng-controller="myCtrl">
    <p>選擇網站:</p>
    <select ng-model="selectedSite">
    	<option  value="">請選擇</option><!-- 這裡是重點,必須將value值設定成空字串,否則第一個選項還是會留空白出來-->
    	<option ng-repeat="x in sites" value="{{x.url}}">{{x.site}}</option>
    </select>
    <h1>你選擇的是: {{selectedSite}}</h1>
    </div>
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
       $scope.sites = [
    	    {site : "Google", url : "http://www.google.com"},
    	    {site : "Runoob", url : "http://www.runoob.com"},
    	    {site : "Taobao", url : "http://www.taobao.com"}
    	];
    });
    </script>
    <p>該例項演示了使用 ng-repeat 指令來建立下拉選單,選中的值是一個字串。</p>
    </body>
    </html>

第一種辦法就是在select的下面加上一個預設option,不過有一點必須特別注意,就是在option中的value值必須設定為“”(也就是空字串),否則上面第一個選項還是會留空白出來。

這樣可能就會有人說我第一個option要是不想獲取的value值為空,那該怎麼辦,比如我第一個value值想設定成“請選擇”這個字串呢?

這種情況也好解決,下面看一下下面這個例子,大家就會明白要怎麼做了。

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
    </head>
    <body>
    <div ng-app="myApp" ng-controller="myCtrl">
    <p>選擇網站:</p>
    <select ng-model="selectedSite">
    	<option  value="請選擇">請選擇</option><!--注意這個地方要和下面的設定的值要一致 -->
    	<option ng-repeat="x in sites" value="{{x.url}}">{{x.site}}</option>
    </select>
    <h1>你選擇的是: {{selectedSite}}</h1>
    </div>
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
       $scope.sites = [
    	    {site : "Google", url : "http://www.google.com"},
    	    {site : "Runoob", url : "http://www.runoob.com"},
    	    {site : "Taobao", url : "http://www.taobao.com"}
    	];
    	$scope.selectedSite="請選擇";<!-- 注意這個設定值,要和上面的value值相一致才可以-->
    });
    </script>
    <p>該例項演示了使用 ng-repeat 指令來建立下拉選單,選中的值是一個字串。</p>
    </body>
    </html>

從例子中就可以看出,其實就是在value中新增自己想要的值資訊,然後再控制器中進行傳初始值。

但是這個時候大家可能會又有一個問題,就是我如果想第一個不想要預設值呢,我就想把資料的任意一個值放在第一個選項裡面呢,而且還不能留空白在上面。

這種情況其實也好解決,下面就再看一個例子:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
    </head>
    <body>
    <div ng-app="myApp" ng-controller="myCtrl">
    <p>選擇網站:</p>
    <select ng-model="selectedSite">
    	<option ng-repeat="x in sites" value="{{x.url}}">{{x.site}}</option>
    </select>
    <h1>你選擇的是: {{selectedSite}}</h1>
    </div>
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
       $scope.sites = [
    	    {site : "Google", url : "http://www.google.com"},
    	    {site : "Runoob", url : "http://www.runoob.com"},
    	    {site : "Taobao", url : "http://www.taobao.com"}
    	];
    	$scope.selectedSite=$scope.sites[0].url;<!-- 這裡只要把想要第一次出來的url放在這裡就可以實現option預設出現的效果了-->
    });
    </script>
    <p>該例項演示了使用 ng-repeat 指令來建立下拉選單,選中的值是一個字串。</p>
    </body>
    </html>

從上面的例子可以很明顯的看出,只要在控制器中新增相應的初始值,就可以實現select中預設選中的效果了。

這樣基本就全部解決了select中第一個選項留空白的問題了。

相關文章