【问题标题】:md-select initialization with i18n使用 i18n 进行 md-select 初始化
【发布时间】:2015-05-09 00:11:21
【问题描述】:

我正在使用 Angular-material 和 I18next。这是我的简单示例:

<md-select ng-init="val='en'" ng-model="val">
    <md-option ng-value="en">{{'en' | i18next}}</md-option>
    <md-option ng-value="de">{{'de' | i18next}}</md-option>
</md-select>

选择标题初始化为“en”而不是“English”。但是一旦我选择了其他值,正确的国际化值就会显示为新的选择标题。

知道如何从其初始化中获取显示国际化值的选择元素吗?

谢谢, 最大

注意如果我直接使用“English”或与选项中的值不同的任何其他值进行初始化,则选择元素根本不会被初始化。

更新:看起来 md-select 元素标题在 md-option 元素内部值被国际化之前被初始化。我不知道如何解决这个问题。

【问题讨论】:

    标签: angularjs i18next angular-material


    【解决方案1】:

    这是您所指的旧 angular-material.js 中的错误 Github Issue 并且已在较新版本中得到解决。

    尝试将您的 angular-material.js 更新为最新(版本 1.3.6)将正确选择值。

    HTML

    <md-select ng-init="val='en'" ng-model="val">
        <md-option ng-value="en">{{'en' | i18next}}</md-option>
        <md-option ng-value="de">{{'de' | i18next}}</md-option>
    </md-select>
    

    Working Plunkr

    更新

    为了使用i18next过滤器下拉预选值,您需要设置 useLocalStorage 选项为 true 以保留所有文件,例如 ``useLocalStorage: true,`

    配置

    app.config(['$i18nextProvider',
      function($i18nextProvider) {
        $i18nextProvider.options = {
          fallbackLng: 'en',
          useCookie: true,
          useLocalStorage: true, //set to true
          resGetPath: 'i18n-__lng__.json',
          lngWhitelist: ['en', 'de'],
          preload: ['en', 'de']
        };
      }
    ]);
    

    Updated Plunkr

    希望对您有所帮助,谢谢。

    【讨论】:

    • @max 你能在这里重现你的问题plnkr.co/edit/vviv7aiT5dJcSBLlv8nf?p=preview吗?可能是我没有正确理解你..
    • 似乎在 plnk 上只有选项元素的“值”显示为选择标题。如何将选项元素的内部标签值显示为选择标题?
    • @Max 我没听明白,你说的是哪个内部标签值?
    • @Max 你的意思是说 i18next 过滤器在初始加载时不起作用
    猜你喜欢
    • 1970-01-01
    • 2020-12-13
    • 2021-09-03
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多