5

我的FIXTURES包含我想根据 ID 排序的产品数组。

Astcart.Application.FIXTURES=[
{
    "name" : "astr",
    "home_products": [
        {
            "id": 3,
            "name": "Mobiles & Accessories"
        },
        {
            "id": 2,
            "name": "Mobiles & Accessories"
        },
        {
            "id": 1,
            "name": "Mobiles & Accessories"
        }
    ]
}
];

我没有得到完整的例子。EMBER.SORTABLEMIXIN我对在 ember 中排序一无所知。

谁能解释我如何使用我的这个例子(不工作)在余烬中进行排序?

4

2 回答 2

9

可排序功能由Ember.SortableMixin提供。这个 mixin 暴露了两个属性:sortAscendingsortProperties.

  • 接受一个布尔值,sortAscending确定排序是否为升序。

  • 并且sortProperties期望具有要排序的属性的数组。

例如:

控制器

App.IndexController = Ember.Controller.extend(Ember.SortableMixin, {
    sortAscending: false,
    sortProperties: ['id'],
});

可以更改这些属性并更新顺序,这是一个动态排序的示例:

控制器

App.IndexController = Ember.Controller.extend(Ember.SortableMixin, {
    sortProperties: ['firstName'], // or whatever property you want to initially sort the data by
    sortAscending: false, // defaults to "true"
    actions: {
        sortBy: function(property) {            
            this.set('sortProperties', [property]);
        }
    }
});

要访问排列的内容,您应该arrangedContent在模板中引用而不是常规model属性。像这样:

模板

<script type="text/x-handlebars" data-template-name="index">
    <h2>Index Content:</h2>
    <table>
      <thead>
        <th {{action "sortBy" "id"}}>ID</th>
        <th {{action "sortBy" "firstName"}}>First Name</th>
        <th {{action "sortBy" "lastName"}}>Last Name</th>
      </thead>
      <tbody>
        {{#each arrangedContent as |prop|}}
        <tr>
          <td>{{prop.id}}</td>
          <td>{{prop.firstName}}</td>
          <td>{{prop.lastName}}</td>
         </tr>
        {{/each}}
      </tbody>
    </table>
  </script>

你可以在这里看到这个工作http://emberjs.jsbin.com/gunagoceyu/1/edit?html,js,output

我希望它有帮助

于 2013-09-17T18:15:09.703 回答
0

由于 Ember.SortableMixin 将在 Ember 2.0(以及 ArrayController)中被弃用,推荐的排序方式将使用Ember.computed.sort(),如下所示:https ://stackoverflow.com/a/31614050/525338

于 2015-07-31T20:06:02.800 回答