【发布时间】:2014-02-17 13:35:07
【问题描述】:
我正在努力将枚举类绑定到 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。 Initial ng-model value not set in select
我不介意通过在控制器中创建具有两个属性的新数组来解决这个问题:{translatedVal, enumId}。
问题是,我如何让这个“translatedVal”与真正的翻译保持同步?
sortingOptions: [
{
val: SuperSearch.Repository.Model.SearchCriteria.cheap,
translation: bindAndInterpolateLanguage('languageKey')
},
使用角度平移。
【问题讨论】:
-
您是否考虑过改用
ng-options(docs.angularjs.org/api/ng/directive/select)?这将使您能够将值直接绑定到数字(1 与“1”)
标签: angularjs typescript angular-translate