2014-02-17 2 views
2

Я борюсь с привязкой enum class к инструкции SELECT.Angularjs перевод в код-сзади

Учитывая определение Машинопись:

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) Функциональность по умолчанию не работает - я отследил эту ошибку до того, как угловой h это сценарий. Он использует сравнение ===, таким образом, «0»! == 0. Initial ng-model value not set in select

Я бы не прочь решить эту проблему, создав новый массив в контроллере, который имеет два свойства: {translVal, enumId}.

Проблема в том, как я могу сохранить эту синхронизацию «translvalVal» с реальным переводом?

sortingOptions: [ 
    { 
     val: SuperSearch.Repository.Model.SearchCriteria.cheap, 
     translation: bindAndInterpolateLanguage('languageKey') 
    }, 

Использование углового перевода.

+0

Рассматривали ли вы с помощью ' ng-options' (http://docs.angularjs.org/api/ng/directive/select)? Это даст вам возможность привязывать значения непосредственно к номерам (1 против «1») – jlb

ответ

1

Это лучшее, что я нашел и использую в своих проектах для привязки значений для выбора компонента. Здесь у меня есть список отделов.

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

Вы можете получить доступ, а также управлять значением «selectedDepartment» в любое время.

Надеюсь, у вас есть идея решить проблему, с которой вы сталкиваетесь.

+0

Мне нужно как-то включить перевод с этим –

+1

@ Erti-ChrisEelmaa, вы можете использовать фильтр 'translate' в' ng-options' для измените то, что отображается как метка опции. Я отредактировал ответ Маниша, чтобы продемонстрировать. – r3m0t

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(); 
       }); 
Смежные вопросы