2016-08-19 172 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