2016-02-24 4 views
2

У меня есть выберитеAngularJS динамические нг-варианты

<select ng-model="country" ng-options="{{selectOptions}}"> 
     <option style="display:none" value="">Select country</option> 
</select> 

и JSon список стран {ID: ..., nameEn: ..., nameRu: ...}

Может кто-то объяснить, почему это работает:

$scope.lang = "En"; 
$scope.selectOptions = "country as country['name'+lang] for country in countries"; 
$scope.customerChanged = function(v){ 
    if (/[а-яА-ЯЁё]/.test(v)) 
     $scope.lang = "Ru"; 
    else 
     $scope.lang = "En"; 
} 

Но это вовсе не так:

$scope.selectOptions = "country as country['nameEn'] for country in countries"; 
$scope.customerChanged = function(v){ 
    if (/[а-яА-ЯЁё]/.test(v)) 
     $scope.selectOptions = "country as country['nameRu'] for country in countries"; 
    else 
     $scope.selectOptions = "country as country['nameEn'] for country in countries"; 
} 

Это не работает либо:

<select ng-model="country" ng-options="country as country.name{{lang}} for country in countries"> 
     <option style="display:none" value="">Select country</option> 
</select> 




$scope.lang = "En"; 
$scope.customerChanged = function(v){ 
    if (/[а-яА-ЯЁё]/.test(v)) 
     $scope.lang = "Ru"; 
    else 
     $scope.lang = "En"; 
} 

ответ

0

<!--First Solution--> 
 
<select ng-model="selectValue" ng-options="item.Name for item in items"> 
 
    <option selected value="">Select Value</option> 
 
</select> 
 

 
<!--Second Solution--> 
 
<select ng-model="selectValue"> 
 
    <option value="{{item.Value}}" ng-repeat="item in items"> 
 
     {{item.Name}} 
 
    </option> 
 
</select> 
 

 
<!--Third Solution--> 
 
<select ng-model="selectValue" ng-options="item.Name for item in items"> 
 
</select> 
 

 
<!--For Multiple Select--> 
 
<select ng-model="" multiple ng-options=""> 
 
</select>

0

От угловой документации:

Почему смешивание интерполяции и выражения плохая практика:

re не является гарантией того, что он работает для каждой директивы, потому что является самой интерполяцией. Если другая директива обращается к данным атрибута до запуска интерполяции, она получит необработанную разметку интерполяции , а не данные.

Смежные вопросы