如何使用操作重新排序模型

时间:2014-11-13 23:48:16

标签: javascript ember.js

我想用上下按钮重新订购我的模型。 什么是执行这些操作的余烬?

这是一个jsbin:http://emberjs.jsbin.com/haxegihaye/9/

感谢您的帮助。

为了更清楚,我只想在我的"模型"中选择一个项目。这是一个数组,只是向上或向下这个项目。我想,我只需要更改数组中项目的索引,但我不知道如何使用ember执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以使用sortProperties: propertyName& sortAscending: true/false

以下是Demo

我修改了您的模型以包含id字段,以便按id排序。

App.PostsRoute = Ember.Route.extend({
    model: function() {
      return [
        {id: 1, title: 'post 1'},
        {id: 2,title: 'post 2'},
        {id: 3,title: 'post 3'},
        {id: 4,title: 'post 4'},
        {id: 5,title: 'post 5'}
      ];
    }
});

你的控制器会像这样 -

App.PostsController = Ember.ArrayController.extend({
  itemController: 'post',



  selectedPost: null,

  actions: {
    up: function() {
      this.set('sortProperties', ['id']);
      this.set('sortAscending', true);

      if (this.get('selectedPost')) {
        var selectedPost = this.get('selectedPost');
        var index = this.get('model').lastIndexOf(selectedPost); 

        if (index > 1) {
          // up

        }
      }
    },
    down: function() {
     this.set('sortProperties', ['id']);
     this.set('sortAscending', false);

      if (this.get('selectedPost')) {
        var selectedPost = this.get('selectedPost');
        var index = this.get('model').lastIndexOf(selectedPost); 

        if (index < this.get('model.length')) {
          // down

        }
      }
    }
  }
});