AmpersandJS:如何在视图中显示之前转换模型数据

时间:2014-09-15 11:19:07

标签: view ampersand.js

在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 个答案:

答案 0 :(得分:0)

使用绑定时,您不限于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'
    }
  }
});

Docs that cover bindings to local properties

答案 1 :(得分:0)

不要忘记View扩展State,因此您可以在视图定义中设置要绑定的属性。在View.extend内,您可以在props哈希中实例化内容,就像使用ampersand-modelampersand-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(); }
});