AmpersandJS: Как преобразовать данные модели перед отображением в виде
В представлении AmpersandJS существует ли соглашение для преобразования данных из модели? Например, я хотел бы иметь возможность отформатировать user.joined
дата в представлении до его отображения. Я бы предпочел не делать это в модели.
Может быть что-то вроде:
var View = require('ampersand-view');
var formatDate = require('../helpers/format-date');
module.exports = View.extend({
bindings: {
'model.joined': {
hook: 'joined',
transform: function(date) { return formatDate(date) }
}
}
});
2 ответа
Решение
Вы не ограничены model
при использовании привязок. Вы также можете привязать к свойствам в представлении и с AmpersandView
продолжается AmpersandState
эти свойства также могут быть получены, например:
var View = require('ampersand-view');
var formatDate = require('../helpers/format-date');
module.exports = View.extend({
derived: {
formattedJoinedDate: {
deps: ['model.joined'],
fn: function() { return formatDate(this.model.joined) }
}
}
bindings: {
'this.formattedJoinedDate': {
hook: 'joined'
}
}
});
Не забывай это View
продолжается State
, так что вы можете настроить свойства в своем определении представления для привязки. Внутри вашего View.extend
Вы можете создавать экземпляры в props
хэш, как вы бы с ampersand-model
или же ampersand-state
, а затем установить привязки на них!
var View = require('ampersand-view');
var formatDate = require('../helpers/format-date');
module.exports = View.extend({
props: { someDate: 'date' },
bindings: {
someDate: {
hook: 'joined',
transform: function(date) { return formatDate(date) }
}
},
initialize: function() { this.someDate = new Date(); }
});