Angularjs 在代码隐藏中翻译

标签 angularjs typescript angular-translate

我正在努力将枚举类绑定(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/

相关文章:

html - 使用 Angular 微调器设置固定的顶部位置

angularjs - 如何在 Angular2 中显示和隐藏带有复选框元素的 div?

javascript - POST 成功时更新不同的 Controller

javascript - Monaco Editor 在空行上显示字符

javascript - Typescript 错误 : Map. values() 给出 IterableIterator not Iterable

javascript - 如何使用 Angular i18n 来处理它似乎不支持的语言?

angularjs - 未知提供者 : $translateStaticFilesLoaderProvider <- $translateStaticFilesLoader

angularjs - 与 Angularjs 和 Backbonejs 相比,Iron Router 如何呈现单页 Web 应用程序

angular - DatePipe.transform 显示 'dd-MM-yyyy' 的 InvalidPipeArgument

javascript - 找不到 Angular 翻译模块 'pascalprecht.translate'