如何在Ember.js中对对象进行排序?

问题描述:

我试过下面的this post,但收效甚微。如何在Ember.js中对对象进行排序?

我有一个示例Ember.js应用程序,并试图对最新帖子首先列出的“博客帖子”进行排序。我哪里错了?

的index.html

<script type="text/x-handlebars" data-template-name="posts"> 

    ... 

    <!-- relevant section --> 
    <section id="posts" class="col-md-12"> 
     {{#each post in model}} 
      <div class="post row"> 
       <h3 class="title">{{post.title}}</h3> 
       <div class="body">{{post.body}}</div> 
      </div> 
     {{/each}} 
    </section> 
</script> 

router.js

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

Blog.PostsRoute = Ember.Route.extend({ 
    model: function() { 
     return this.store.find('post'); 
    } 
}); 

posts_controller.js

Blog.PostsController = Ember.ArrayController.extend({ 
    itemController: 'post', 
    sortProperties: ['id'], 
    sortAscending: false, 
    actions: { 
     createPost: function() { 
      var title = this.get('newTitle'); 
      var body = this.get('newBody'); 
      if(!title.trim() || !body.trim()) { return; } 

      var post = this.store.createRecord('post', { 
       title: title, 
       body: body 
      }); 

      this.set('newTitle', ''); 
      this.set('newBody', ''); 

      post.save(); 
     } 
    } 
}); 

post.js

Blog.Post = DS.Model.extend({ 
    title: DS.attr('string'), 
    body: DS.attr('string') 
}); 
Blog.Post.FIXTURES = [ 
    { 
     id: 1, 
     title: 'Hell Is Other Robots', 
     body: 'You know the worst thing about being a slave? They make you work, but they don\'t pay you or let you go. Kif, I have mated with a woman. Inform the men. Now, now. Perfectly symmetrical violence never solved anything.' 
    }, 
    { 
     id: 2, 
     title: 'The Luck of the Fryrish', 
     body: 'Tell them I hate them. There\'s no part of that sentence I didn\'t like! Fetal stemcells, aren\'t those controversial? Daylight and everything. That\'s not soon enough! You\'re going to do his laundry? Oh right. I forgot about the battle. Hey, whatcha watching?' 
    }, 
    { 
     id: 3, 
     title: 'The Duh-Vinci Code', 
     body: 'I\'ve been there. My folks were always on me to groom myself and wear underpants. What am I, the pope? Actually, that\'s still true. You seem malnourished. Are you suffering from intestinal parasites? And remember, don\'t do anything that affects anything, unless it turns out you were supposed to, in which case, for the love of God, don\'t not do it! Oh, I always feared he might run off like this. Why, why, why didn\'t I break his legs?' 
    } 
]; 

您只需直接绑定到arrangedContent属性而不是模型。

{{#each post in arrangedContent}} 
    <div class="post row"> 
     <h3 class="title">{{post.title}}</h3> 
     <div class="body">{{post.body}}</div> 
    </div> 
{{/each}} 

请参阅arrangedContenthere的文档。 Dom Cristie写了一个nice overview here

+0

这样做。你碰巧有一个链接到文件,提到排列内容?我甚至不知道这是一个想法。 – drewwyatt 2015-02-11 02:54:37

+1

最好使用'{{#控制器中的每个帖子}}'。这样你的帖子将被包裹在'post'项目控制器中 – 2015-02-18 13:35:39