【问题标题】:Ember sorting hasMany relationshipEmber 排序有很多关系
【发布时间】:2014-09-22 07:22:47
【问题描述】:

我想按升序 (A-Z) 对一组类别和项目进行排序。

我的 HBS 模板遍历 {{each}} 类别,然后遍历类别中的 {{each}} 项。

我尝试将 sortProperties 传递给每个数组控制器,但这似乎没有任何影响。我还尝试将排序提取到数组代理(使用此处的帮助:Ember.js sorting and filtering children of a hasMany relationship in parent route

有什么想法可以从这里继续前进吗?

到目前为止,这是我的 JSBin:http://jsbin.com/momihe/8/edit

非常感谢!

【问题讨论】:

    标签: javascript sorting ember.js


    【解决方案1】:

    最简单的方法是对模型上的项目进行排序,然后对其进行迭代

    App.Category = DS.Model.extend({
        title: DS.attr("string"),
        createdAt: DS.attr('date', { defaultValue: new Date() }),
        items: DS.hasMany('item', { async: true }),
        sortedItems: Em.computed.sort('items', function(item1, item2){    
          return item1.get('desc').localeCompare(item2.get('desc'));
        })
    });
    

    http://jsbin.com/lojep/1/edit

    下一个最简单的方法是使用项目控制器,并将排序列表放在那里

    模板

     {{#each model itemController='foo'}}
        <li><strong>{{title}}</strong>
          {{#each sortedItems}}
            <div>{{desc}}</div>
          {{/each}}
          <br>
        </li>
      {{/each}}
    

    控制器

    App.FooController = Em.ObjectController.extend({
      sortedItems: Em.computed.sort('items', function(item1, item2){    
        return item1.get('desc').localeCompare(item2.get('desc'));
      })
    });
    

    http://jsbin.com/lojep/2/edit

    【讨论】:

    • 这太好了,谢谢!我将使用选项 2,因为它看起来更像是一种装饰功能,并且可能不应该驻留在模型中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 2014-07-10
    • 2015-08-05
    • 2015-04-07
    相关资源
    最近更新 更多