我正在制作一个把手助手,以简化Ember应用程序的翻译。它需要能够绑定到计数选项,因为计数会随着时间的推移而变化,并且根据计数,翻译需要是复数或单数。
例如:
{{i18n translation.key countBinding='numberCount'}}
将转到语言文件并查看
translation: {
key: {
'one': 'widget',
'other': 'widgets'
}
}
并将返回'widget'或'widgets',具体取决于numberCount
以下是帮助程序的代码:
Ember.Handlebars.registerBoundHelper('i18n', function(property, options) {
var params = options.hash,
self = this;
// Support variable interpolation for the options
Object.keys(params).forEach(function(key) {
params[key] = Em.Handlebars.get(self, params[key], options);
});
// Coerce number-like strings into numbers
if (params.count && !isNaN(params.count) && typeof(params.count) == "string") {
params.count = Number(params.count);
}
// I18n is the library that powers the translation
return I18n.t(property, params);
});
如果我使用Ember.Handlebars.registerHelper
代替registerBoundHelper
,它可以正常工作,它只是不会绑定到该选项。但是当我尝试使它成为绑定帮助器时(如上面的代码中所示),应用程序将不会加载,并且控制台会给我错误“未捕获的TypeError:对象#没有方法'拆分'”
以下是Ember.Handlebars.registerBoundHelper的文档:http://emberjs.com/api/classes/Ember.Handlebars.html#method_registerBoundHelper
答案 0 :(得分:0)
如果我们替换
,它会起作用吗?var params = options.hash
与
var params = options.hash.boundOptions
和
{{i18n translation.key countBinding='numberCount'}}
与
{{i18n translation.key count=numberCount}}
? 它适用于我的测试环境。