Ember tem alguns ajudantes de propriedade computada impressionantes que permitem expressar concisamente propriedades computadas comuns. Ao escrever seu aplicativo, você pode começar a notar alguns outros padrões em suas propriedades computadas que podem ser extraídos de forma agradável em seus próprios auxiliares de propriedade computada.
Por exemplo, o Ember vem com, Ember.computed.notEmpty
mas você também pode querer um notBlank
ajudante:
MyApp.computed = {
notBlank: function (dependentKey) {
return Ember.computed(dependentKey, function() {
!Ember.isBlank(Ember.get(this, dependentKey));
}).readOnly();
}
};
ou algo mais específico do aplicativo, como traduzir um valor enum:
MyApp.computed = {
enum: function(serializedKey, enumType) {
return Ember.computed(serializedKey, function(key, value) {
if(arguments.length > 1) {
var serializedValue = MyApp.Enums.serialize(enumType, value);
Ember.set(this, serializedKey, serializedValue);
return value;
} else {
var serializedValue = Ember.get(this, serializedKey);
return MyApp.Enums.deserialize(enumType, serializedValue);
}
});
}
};
Para se aprofundar, verifique a implementação do Ember de seus auxiliares de propriedade computada:
https://github.com/emberjs/ember.js/blob/v1.5.0/packages/ember-metal/lib/computed.js