enum クラスを SELECT ステートメントにバインドするのに苦労しています。
与えられた TypeScript 定義:
enum SearchCriteria {
expensive = 0,
cheap = 1,
interesting = 2,
newest = 3
}
と使用法:
<div id="searchResultSort">
{{'sort' | translate}}:
<select
ng-model=" options.selectedCriteria">
<option value="0"> {{'sortByExpensive' | translate}}</option>
<option value="1"> {{'sortByCheap' | translate}}</option>
<option value="2"> {{'sortByInteresting' | translate}}</option>
<option value="3"> {{'sortByNewest' | translate}}</option>
</select>
</div>
このコードにはいくつかの問題があります。
1) 列挙値はハードコードされています
2) デフォルト値の機能が機能しない - このバグを angularjs がこのシナリオを処理する方法まで追跡しました。それは比較を使用します === したがって "0" !== 0. 初期の ng-model 値が select に設定されていません
{translatedVal, enumId} の 2 つのプロパティを持つコントローラーに新しい配列を作成することで、この問題を解決してもかまいません。
問題は、この「translatedVal」を実際の翻訳とどのように同期させるかです。
sortingOptions: [
{
val: SuperSearch.Repository.Model.SearchCriteria.cheap,
translation: bindAndInterpolateLanguage('languageKey')
},
angular-translate を使用します。