Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Ember Starter Kit</title>
  <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/normalize/3.0.1/normalize.css">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  <script src="http://builds.emberjs.com/tags/v1.11.0/ember-template-compiler.js"></script>
  <script src="http://builds.emberjs.com/tags/v1.11.0/ember.debug.js"></script>
</head>
<body>
  <div id='app'></div>
  <pre id="logs"></pre>
  <script type="text/x-handlebars">
    <h2>Welcome to Ember.js</h2>
    {{outlet}}
  </script>
  <script type="text/x-handlebars" data-template-name="index">
    <div>
      <ul>
      {{#each folder in model}}
        Folders: <br>
        Name: {{folder.name}} <br>
        {{#each file as folder.files}}
          Files: <br>
          {{file.name}}
        {{/each}}
      {{/each}}
    </ul>
    </div>
    
  </script>
</body>
</html>
 
/* Put your CSS here */
html, body {
  margin: 20px;
}
 
App = Ember.Application.create({
  rootElement: '#app',
  LOG_RESOLVER: true
});
//I think I may have some issue with the FixtureAdapter.
//This may be another stackoverflow question.
App.ApplicationAdapter = DS.FixtureAdapter;
App.IndexRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('folder');
  }
});
App.IndexController = Ember.Controller.extend({
  
});
App.Router.map(function() {
  // put your routes here
});
App.Folder = Ember.Route.extend({
  name: DS.attr('string'),
  files:  DS.hasMany('file', {async: true}),
  //This is where my issue is (I think)
  sortedFiles: function(){
    return this.get('files').sortBy('name', function(a,b){
      return parseInt(b.split(' ').pop()) - parseInt(a.split(' ').pop());
    }); 
  }.property('files@each.name')
  
  //I tried this the following as well.
  //Although I ran some tests and sortBy works on a promise if you use an attribute that is not a DS.hasMany
  //so technically, I should not have to use then().  Either way this does not work either.
  //sortedFiles: function(){
  //  return this.get('files').then(function(files){
  //    return files.sortBy('name', function(a,b){
  //      return parseInt(b.split(' ').pop()) - parseInt(a.split(' ').pop());
  //    });
  //  }); 
  //}.property('files@each.name')
  
});
App.File = Ember.Route.extend({
  name: DS.attr('string'),
  folder: DS.belongsTo('folder', { async: true })
});
App.Folder.FIXTURES = [
  {
    id: 1,
    name: 'Folder 1',
    files: [1,2,3,4]
  },
  {
    id: 2,
    name: 'Folder 2',
    files: [5,6]
  }
];
App.File.FIXTURES = [
  {
    id: 1,
    name: 'File 5',
    folder: 1
  },
  {
    id: 2,
    name: 'File 1',
    folder: 1
  },
  {
    id: 3,
    name: 'File 3',
    folder: 1
  },
  {
    id: 4,
    name: 'File 2',
    folder: 1
  },
  {
    id: 5,
    name: 'File 6',
    folder: 2
  },
  {
    id: 6,
    name: 'File 4',
    folder: 2
  }
];
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers