Ember Data Mockjax

by alexspeller

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-mockjax/1.5.2/jquery.mockjax.js"></script>
<script src="http://ember.alexspeller.com/handlebars-1.0.0.js"></script>
<script src="http://ember.alexspeller.com/ember-latest.js"></script>
<script src="http://ember.alexspeller.com/ember-data-latest.js"></script>
<script type="text/x-handlebars">
    <h1>Example</h1>
    {{#link-to "projects"}}Project Teams{{/link-to}}
    {{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="projects">
    <h2>Project Teams</h2>
    <ul>
        {{#each project in model}}
            <li>Project:{{project.name}}<br>
                {{#each projectTeam in project.project_teams}}
                      Team: {{projectTeam.team.name}}
                       SDE: {{projectTeam.sdeEffort}}         
                {{/each}}
            </li>
        {{/each}}
    </ul>
</script>

JavaScript

window.App = Em.Application.create();

App.ApplicationAdapter = DS.ActiveModelAdapter.extend();

App.ProjectsRoute = Em.Route.extend({
  model: function() {
    return this.store.find('project');
  }
});

App.Router.map(function() {
  return this.resource('projects');
});

App.ProjectTeam = DS.Model.extend({
  sdeEffort: DS.attr('number'),
  createdAt: DS.attr('date'),
  updatedAt: DS.attr('date'),
  project: DS.belongsTo('project'),
  team: DS.belongsTo('team')
});

App.Project = DS.Model.extend({
  name: DS.attr('string'),
  createdAt: DS.attr('date'),
  updatedAt: DS.attr('date'),
  projectTeams: DS.hasMany('projectTeam')
});

App.Team = DS.Model.extend({
  name: DS.attr('string'),
  createdAt: DS.attr('date'),
  updatedAt: DS.attr('date'),
  projectTeams: DS.hasMany('projectTeam')
});

$.mockjax({
  url: "/projects",
  responseText: {
    project_teams: [
      {
        id: 2,
        sde_effort: 213,
        created_at: "2014-01-04T16:18:19.546Z",
        updated_at: "2014-01-04T16:18:19.546Z",
        project_id: 1,
        team_id: 1
      }, {
        id: 3,
        sde_effort: 2,
        created_at: "2014-01-04T16:18:53.365Z",
        updated_at: "2014-01-04T16:18:53.365Z",
        project_id: 1,
        team_id: 1
      }, {
        id: 1,
        sde_effort: 123,
        created_at: "2014-01-04T16:17:59.498Z",
        updated_at: "2014-01-04T16:17:59.498Z",
        project_id: 1,
        team_id: 1
      }
    ],
    projects: [
      {
        id: 1,
        name: "asd",
        created_at: "2014-01-04T16:17:59.441Z",
        updated_at: "2014-01-04T16:17:59.441Z",
        project_team_ids: 1
      }, {
        id: 2,
        name: "sadfsdf",
        created_at: "2014-01-04T16:18:19.504Z",
        updated_at: "2014-01-04T16:18:19.504Z",
        project_team_ids: 1
      }, {
        id: 3,
        name: "dfgdf",
        created_at: "2014-01-04T16:18:53.311Z",
        updated_at: "2014-01-04T16:18:53.311Z",
        project_team_ids: 1
      }, {
     ...