我正在努力将枚举类绑定(bind)到 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
我不介意通过在 Controller 中创建具有两个属性的新数组来解决这个问题:{translatedVal, enumId}。
问题是,我如何使这个“translatedVal”与真实翻译保持同步?
sortingOptions: [
{
val: SuperSearch.Repository.Model.SearchCriteria.cheap,
translation: bindAndInterpolateLanguage('languageKey')
},
使用 Angular 平移。
最佳答案
这是我发现并仍在我的项目中用于绑定(bind)值以选择组件的最佳方法。我这里有一个部门列表。
<select data-ng-model="selectedDepartment"
data-ng-options="dept.DepartmentId as dept.Title for dept in departments"
data-ng-change="onDepartmentChange()" />
您可以随时访问和操作“selectedDepartment”的值。
希望它能提供一些想法来解决您面临的问题。
关于Angularjs 在代码隐藏中翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21830518/