2016-08-19 12 views
1

<select>にはng-modelがあり、オプションの1つはスペースです。初期値がそれ以外の場合は、angleは正しいオプションを選択しますが、初期値がスペースの場合、angleは空のオプションを追加します。スペースのオプション値を持つ角度選択

私のような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"; 

を第1の選択は、空白のオプションを持つことになり、2番目は「デフォルト」と表示されます。 ng-trimを追加しても役に立たないようで、データベースから値を取得しているので、簡単に変更できません。

角度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

あなたはこれを試すことができますか?

<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> 

が結合する前に、変数をトリミング:

は、あなたのオプションにNG-トリム適用します。

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

残念ながら、これは 'a'の値を変更します。これは' '' 'としてサーバに送り返したいものです。私はそれを回避する方法を見つけることができない場合、私はこれを行う可能性があります。 –

+0

'(" ").trim();'は '' ''なので、どうやってそのスペースを分析できますか? –

+0

@Andrew:データベースからデータを取得し、オプションにバインドする前に、データを重複しないように処理する必要があります。 Ruhul

関連する問題