【问题标题】:How do I sort objects in Ember.js?如何在 Ember.js 中对对象进行排序?
【发布时间】:2024-01-18 13:17:02
【问题描述】:

我尝试关注this post,但收效甚微。

我有一个示例 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>

路由器.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?'
    }
];

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

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

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

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

    【讨论】:

    • 做到了。您是否碰巧有一个指向提到排列内容的文档的链接?我什至不知道这是一个想法。
    • 最好使用{{#each post in controller}}。这样,您的帖子将被包裹在 post 项目控制器中
    最近更新 更多