【问题标题】:Angular Select with an option value of space具有空间选项值的角度选择
【发布时间】:2016-08-19 18:43:25
【问题描述】:

我有一个<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 似乎没有帮助,我从数据库中获取值,所以我不能轻易更改它们。

我可以使用 Angular 1.4.8、1.4.9(我正在使用)和 1.5.8 重现该问题,所有这些都来自 https://code.angularjs.org/

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

ng-model 初始化为空格时,如何让&lt;select&gt; 显示正确的选项?

【问题讨论】:

    标签: javascript angularjs angular-ngmodel


    【解决方案1】:

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

    $scope.spaceChar = " ";

    然后在您的选择中:

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

    【讨论】:

    • 不走运,仍然进入空白选项。
    • 你确定吗?我用了你的小提琴,它似乎对我有用:jsfiddle.net/d1cj3kzb/5
    • 你说得对,这行得通!我在尝试时打错了。
    【解决方案2】:

    你可以试试这个吗?

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

    【讨论】:

    • 不幸的是,这改变了a 的值,我想将其作为" " 发送回服务器。如果我找不到解决办法,我可能会这样做。
    • (" ").trim(); 会是"",那么它如何分析它的空间呢?
    • @Andrew :我认为从数据库中获取数据并在将其绑定到选项之前,您必须以某种方式处理您的数据,使其也没有重复。即
    猜你喜欢
    • 2021-10-23
    • 2016-06-23
    • 1970-01-01
    • 2022-11-26
    • 2021-03-14
    • 2018-03-25
    • 2019-05-08
    • 1970-01-01
    • 2012-10-19
    相关资源
    最近更新 更多