Ember-Model

Ember-Model

by Nirvanachain

HTML

<script src="http://builds.emberjs.com/tags/v1.10.0/ember-template-compiler.js"></script>
<script src="http://builds.emberjs.com/release/ember.min.js"></script>
<script src="https://rawgit.com/ebryn/ember-model/master/ember-model.js"></script>
<script type="text/x-handlebars">
    {{outlet}}
</script>

<script type="text/x-handlebars" id="index">
    <h1>Index Template!!!{{active_date}}</h1>
    <p>name = {{name}}</p>
    <p>active_date = {{active_date}}</p>
    <p>active_date.date = {{active_date.date}}</p>
    <p>active_date.time = {{active_date.time}}</p>
    
</script>

JavaScript

App = Ember.Application.create();

var DateTime = {
    dateStr: '',
    timeStr: '',
    
    serialize: function(string) {
        var pieces = string.split('T');

        this.dateStr = pieces[0];
        this.hours   = pieces[1].replace('Z','').split(':')[0];
        this.minutes = pieces[1].replace('Z','').split(':')[1];
        
        return {
          date: this.dateStr,
          time: this.hours + ':' + this.minutes
        };

      },

    deserialize: function(string) {
      return this.dateStr + 'T' + this.hours + ':' + this.minutes + 'Z';
    }
};

App.TheModel = Ember.Model.extend({
    name: Ember.attr(),
    date: Ember.attr(DateTime)
});

/***
  MOCK SERVER DATA
***/
var JSON_DATA = {
    "name": "John",
    "active_date": "2015-01-22T01:30Z"
};        


App.Router.map(function() {
    this.resource('index', {path: '/'});
});

App.IndexRoute = Ember.Route.extend({
    model: function() {
      return App.TheModel.create(JSON_DATA);
    }
});