javascript - knockoutjs 中的选项、optionsText 和 optionsValue

标签 javascript html knockout.js data-binding internationalization

我想知道数据绑定(bind)、选项、optionsText 和 optionsValue 在这里是如何工作的?

<div class="header dropdown">
         <select data-bind=" value: locale.selected_locale,
           options: [{ value: 'en-CA', label: 'english'}, { value: 'fr-CA',label: 'french'}],
           optionsText: function (item) {return i18n(item.label);},
           optionsValue: 'value' "  class="auto">
         </select>
     </div>

Here is the Fiddle from google Chrome's inspect element (Translation of english and french words take place on clicking English and French in the actual website) for the above code.

在实际网站中,它 ( Fiddle ) 的工作方式是,如果我点击英语,那么整个页面都会翻译成英语,如果我点击法语,那么整个页面都会以法语显示。

en-CA 和 fr-CA 是翻译了英文和法文的 JS 文件。

最佳答案

选项 绑定(bind)到(正如我推测的那样)一个可观察的locale.selected_locale。正如您在 optionsText: i18n(item.label) 中看到的那样,有某种 i18n 模块负责翻译文本。

因此,我假设有一个代码 (ko.computed) 负责响应式地更改语言环境:

ko.computed(function(){
    //pseudocode; this function will run everytime locale.selected_locale changes
    var lang = locale.selected_locale();
    i18n.setLang(lang); 
});

我希望这有助于了解正在发生的事情,以及翻译如何在您调查的那个网站上工作。

关于选项绑定(bind),查看 knockout.js documentation用于选项绑定(bind)。基本上:

选项中选择的值将存储在 locale.selected_locale 中。有两个可用选项,每个选项都存储传递给 i18n 模块的区域设置标识符,以及标签翻译的关键标识符。因此,在 en-CA 文件中,“english”下会有“English”的翻译,而在 fr-CA 中,在相同的键下,“Anglais”将被存储。 optionsValue 指定所选项目对象中的哪个属性存储最终将存储在 locale.selected_locale 中的实际值。

关于javascript - knockoutjs 中的选项、optionsText 和 optionsValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40936206/

相关文章:

javascript - 当使用 knockout 添加项目时,在 jquery 移动网格中修改 div 的类

javascript - 使用 html Mailto : not working 向多个收件人发送电子邮件

javascript - 将 $(this) 传递到设置的超时函数中?

javascript - 如何使用 jquery trim 这样的文本?

javascript - 如何让 <div> 垂直居中?

html - Logo 旋转木马不是环形的

javascript - 在用户输入字符之前禁用回车键?

javascript - 减去页脚和页眉高度的全列高度

knockout.js - 分析 knockoutjs 映射插件

Javascript View 模型初始化