Angular Select,选项值为space

时间:2016-08-19 18:43:26

标签: javascript angularjs angular-ngmodel

我有<select> ng-model,其中一个选项是空格。当初始值是其他值时,angular选择正确的选项,但是当初始值是空格时,angular会添加空选项。

我可以用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似乎没有帮助,我从数据库中获取值,因此我无法轻易更改它们。

我可以通过https://code.angularjs.org/重现Angular 1.4.8,1.4.9(我正在使用)和1.5.8的问题。

我在这里有一个小提琴:https://jsfiddle.net/d1cj3kzb/4/

如果<select>初始化为空格,如何让ng-model显示正确的选项?

2 个答案:

答案 0 :(得分:1)

尝试在代码中声明一个具有默认值的变量,在本例中为空格,如:

$ scope.spaceChar =&#34; &#34 ;;

然后在你的选择中:

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

答案 1 :(得分:0)

你能试试吗?

将ng-trim应用于您的选项:

<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";
    }
);