2016-03-31 24 views
2

AngularJSの新機能です。私は非常に単純なタスクを持っています:HTML <select>タグを使用して、角度で整数値を選択してください。AngularJS選択タグで整数値を選択

<select ng-model="foo.bar"> 
    <option ng-repeat="option in options" value="{{option}}">{{option}}</option> 
</select> 

foo.barは整数値を保持します。上記のコードを実行すると、最初に生成されるオプションは<option value="? number:32 ?"></option>です。私は、選択した値が文字列として解釈されることを知りました。私は整数が欲しい。

私はいくつかの解決策を見つけましたが、複雑な(documentation example to implement a convert-to-number-functionのような)か、optionsの配列が異なって見えます(私のものは単純な整数の配列です)。

+2

選択はあなたが数(値) –

+0

のように番号を付けるために、その値を変換する必要がありますだからここで私はその変換を行うことができますあなたの文字列を与えるのだろうか? – ehannes

+0

コントローラで –

答えて

3

-

+2

[ngOptions](https://docs.angularjs.org/api/ng/directive/ngOptions)の期待される式は '_select_(_label_)のようにする必要があります。 for(_key _、)?_ value_ in _collection_'。 'ng-options'を' Options'のオプション 'option'に変更すれば動作します。 –

+0

偉大な答え!コントローラの整数を解析する必要はありません! :)私は同様のことをやろうとしましたが、 'ng-options'-partを正しく得ることができませんでした。 – ehannes

+0

@CosminAbabeiあなたが正しいです!指摘してくれてありがとう –

0

選択すると文字列が表示されます。その文字列をコントローラコード内の数字に変換する必要があります。

foo.bar = parseInt(foo.bar); 

foo.bar変数の変更を調べて整数に解析する必要があるかもしれません。

https://docs.angularjs.org/api/ng/type/ $ rootScope.Scopeを見て、見て$を検索します。代わりに ng-repeatあなたがすべきと組み合わせ optionタグの

var numValue = Number(foo.bar); 
+0

なぜ不要な$ watchが必要なのですか? –

+0

彼は彼のコードの別の部分にfoo.barを使用したい場合は、彼はフレディが示唆したように、あなたが 'NG-options'を使用することができたときに整数にそれを解析で明示的にすべての整数を解析するのはなぜ時間 – Hoijof

+0

を消化する必要がありますので、? – ehannes

0

選択]ドロップダウンを使用すると、それは整数になりたい場合は、コントローラ

コントローラでそれをひそか、いつもあなたの文字列値を与えます次のように角度ng-options directiveを使用してください。

<select ng-model="foo.bar" ng-options="option for option in options"></select> 

optionsが整数の配列である場合、ng-modelには整数も含める必要があります。

関連する問題