How to use EMBER.SORTABLEMIXIN?

做~自己de王妃 提交于 2019-12-23 10:53:30

问题


My FIXTURES contains array of products which i want to sort based on ID.

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

I am not getting complete example of EMBER.SORTABLEMIXIN.I don't have any idea about sorting in ember.

Can anyone explain me how to do sorting in ember using my this example(Not working)?


回答1:


The sortable feature is provided by Ember.SortableMixin. This mixin expose two properties: sortAscending and sortProperties.

  • The sortAscending accepts a boolean value determining if the sort is ascendant or not.

  • And the sortProperties expect an array with the properties to sort.

For instance:

Controller

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

These properties can be changed and the order will be updated, here is a sample with dynamic sort:

Controller

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]);
        }
    }
});

To access the arranged content, you should refer to arrangedContent in your template instead of the regular model property. Like this:

Template

<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>

You can see this working here http://emberjs.jsbin.com/gunagoceyu/1/edit?html,js,output

I hope it helps




回答2:


Since Ember.SortableMixin is going to be deprecated in Ember 2.0 (as well as the ArrayController), the recommended way to sort will be using Ember.computed.sort(), as illustrated here: https://stackoverflow.com/a/31614050/525338



来源:https://stackoverflow.com/questions/18855942/how-to-use-ember-sortablemixin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!