2016-08-19 164 views
1

我有<select>ng-model,其中一個選項是空間。當初始值是其他值時,角度選擇正確的選項,但是當初始值是空格時,角度會添加空白選項。角選擇與空間的選項值

我可以用HTML重現它像:

<select ng-model="a" ng-trim="false"> 
    <option value=" ">Default</option> 
</select> 

<select ng-model="b"> 
    <option value="x">Default</option> 
</select> 

和控制器,如:

$scope.a = " "; 
$scope.b = "x"; 

的第一選擇將有一個空白選項,第二個會顯示「默認」。添加ng-trim似乎沒有幫助,我從數據庫中獲取值,因此我無法輕鬆更改它們。

我可以重現Angular 1.4.8,1.4.9(我正在使用)和1.5.8,全部來自https://code.angularjs.org/的問題。

我在這裏有一個小提琴:https://jsfiddle.net/d1cj3kzb/4/

ng-model被初始化爲一個空格時,我怎樣才能讓<select>顯示正確的選項?

回答

1

嘗試聲明代碼中的變量有默認的值,在這種情況下的空間,如:

$ scope.spaceChar =「「;

,然後在您的選擇:

<select ng-model="a" ng-trim="false"> 
    <option value="{{spaceChar}}">Default</option> 
</select> 
+0

沒有運氣,仍然去空白選項。 –

+0

你確定嗎?我用你的小提琴,它似乎爲我工作:https://jsfiddle.net/d1cj3kzb/5/ – angelika

+0

你是對的,這個作品!試用時我犯了一個錯字。 –

0

你可以試試這個?

應用NG-修剪到您的選擇:

<div ng-app="app" ng-controller="MyCtrl"> 
    <select ng-model="a" > 
     <option value=" " ng-trim="true">Default</option> 
    </select> 

    <select ng-model="b"> 
     <option value="x">Default</option> 
    </select> 

結合之前修剪你的變量。

angular.module("app", []) 
    .controller("MyCtrl", 
    function ($scope) { 
     $scope.a = (" ").trim(); 
     $scope.b = "x"; 
    } 
); 
+0

不幸的是,它改變了'a'的值,我想把它作爲''「'發送回服務器。如果我找不到解決辦法,我可能會這樣做。 –

+0

'(「」).trim();''會是''「',那麼它如何分析它的空間呢? –

+0

@Andrew:我想從數據庫中獲取數據,在將其綁定到選項之前,您必須以某種方式處理數據,以避免重複。即 Ruhul