如果我有一个用点符号定义的属性,我如何在Ember中对它进行@get或@set?
model = DS.Model.extend EmberValidations.Mixin,
...
validations:
'user.fullName':
presence:
message: null
initializer: (->
@set 'validations.user.fullName.presence.message', @get('i18n').t('validations.fullName.format') # this doesn't work
).on('init')
问题是我无法在' validations.user.fullName'上执行@get或@set。因为它不知道如何访问该属性。但是由于ember-validations的工作方式,我必须以这种方式定义属性,如果我想使用i18n,我必须设置它。
如果需要,我可以@get('validations')['user.fullName'].presence.message
获取值,但实际上我需要设置它。
我确定必须有一种方法可以在属性名称中使用点表示法来设置它,但我无法在任何地方找到任何说法。
请帮忙吗?
答案 0 :(得分:0)
我从来没能做到这一点。关于i18n支持,我有opened an issue关于ember-model-validator的问题。但我已经能够使用以下代码解决问题(使用custom validation):
translate(label) {
return this.get('i18n').t(label).toString();
},
validations: {
code: {
'user.fullName': {
validation(key, value) {
return !Ember.isEmpty(value);
}, message(key, value) {
let translation = value.translate('path.to.required.message.translation');
return translation;
}
}
}