2

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 を使用します。

4

2 に答える 2

1

これは私が見つけたもので、値をバインドしてコンポーネントを選択するためにプロジェクトでまだ使用しています。ここに部門リストがあります。

<select data-ng-model="selectedDepartment"   
data-ng-options="dept.DepartmentId as dept.Title for dept in departments"   
data-ng-change="onDepartmentChange()" />  

「selectedDepartment」の値は、いつでもアクセスおよび操作できます。

あなたが直面している問題に取り組むためのアイデアが得られることを願っています。

于 2014-02-25T09:54:59.210 に答える
0

値を手動で宣言する場合は、この方法を試してください

  <select class="form-control input-lg" ng-model="selectedSearchCriteria" ng-change="changeTenant(this.selectedSearchCriteria)" required ng-options="i.ToString() for i in SearchCriteria"></select> 

var SearchCriteria=[{
          "expensive":0},
          {"cheap" : 1},
          {"interesting" : 2},
          {"newest" : 3}]        
         $scope.selectedSearchCriteria = SearchCriteria[0];

ajax 呼び出しを使用してサーバー側から値を取得する場合は、以下の方法を試してください

 <select class="form-control input-lg" ng-model="selectedSearchCriteria" ng-change="changeTenant(this.selectedSearchCriteria)" required ng-options="i.ToString() for i in SearchCriteria"></select> 

             $http.get(URL)
               .success(function (response) {
                   $scope.SearchCriteria= response;
                   $scope.selectedSearchCriteria = response[0];
                   $scope.$apply();
               });
于 2014-02-26T08:25:16.810 に答える