Bap*_*ste 5 javascript enums angularjs
我目前遇到一个看似简单的问题:
控制器:
$scope.fruits = [{
name: 'AP',
label: 'Apple'
}, {
name: 'BA',
label: 'Bananas'
}];
Run Code Online (Sandbox Code Playgroud)
HTML代码:
<select
ng-model="meal.fruit"
ng-options="fruit.name as fruit.label for fruit in fruits">
</select>
<p>Fruit : {{meal.fruit}}</p>
Run Code Online (Sandbox Code Playgroud)
问题是,这显示
Fruit : BA
Run Code Online (Sandbox Code Playgroud)
代替
Fruit : Bananas
Run Code Online (Sandbox Code Playgroud)
我不能将ng-option修改为"fruit as fruit.label",因为我需要我的模型"meal.fruit"为"AP"或"BA"(因为它是由杰克逊进行的java enum反序列化,它需要枚举值).
总之,我需要meal.fruit为"BA",我也希望能够在其他地方显示所选的值"香蕉".
我能做什么 ?
编辑:
Maxim Shoustin找到了适合我的解决方案(非常感谢!):
我修改了我的代码以具有以下内容:
然后我修改了我的提交方法以添加以下内容:
$scope.meal.fruit = $scope.meal.fruit.name;
Run Code Online (Sandbox Code Playgroud)
只是改变ng-options:
ng-options="fruit.label as fruit.label for fruit in fruits">
Run Code Online (Sandbox Code Playgroud)
固定演示:Fiddle
作为旁注
您可以使用以下命令设置默认第一个元素以避免空组合ng-init:
<select
ng-model="meal.fruit"
ng-options="fruit.label as fruit.label for fruit in fruits"
ng-init="meal.fruit = fruits[0].label"
>
Run Code Online (Sandbox Code Playgroud)
演示:Fiddle
| 归档时间: |
|
| 查看次数: |
1684 次 |
| 最近记录: |