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(); }
});
Другие вопросы по тегам