使用Vue对表进行排序

时间:2015-10-08 22:41:33

标签: laravel vue.js

如果我想用Vue.js对表进行排序,我是否应该始终在ajax请求中获取要接收的数据?让v-repeat起作用?或者哪种方法可以使用来自控制器的数据?

我想知道这是否是使用Vue.js时唯一的方法 我试图以传统的方式使用已经获取的表,然后对其标题字段进行排序,例如。 (title,created_at)

 @foreach($sliders as $slider)
              <tbody>
                <tr>
                  <td>{{$slider->nombre}}</td>
                  <td>{{$slider->mensaje}}</td>
                  <td>{!!Html::image($slider->thumb_path)!!}</td>
                  <td>{{$slider->publicado}}</td>
                  <td>{{$slider->created_at}}</td>
                   <td>{!!link_to('admin/slider/'.$slider->id.'/edit', 'editar','class="btn btn-primary"')!!}
                      {!!link_to('admin/slider/'.$slider->id, 'borrar','class="btn btn-danger"')!!}
                  </td>
 @endforeach

我希望我的桌子像 http://javascriptbook.com/code/c12/sort-table.html 但是使用Vue.Js和从控制器接收的数据

1 个答案:

答案 0 :(得分:2)

您可以使用orderBy Vue过滤器,例如:

<table>
  <thead>
    <tr>
      <th v-repeat="column: columns">
        <a href="#" v-on="click: sortBy(column)">{{ column }}</a>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr v-repeat="users | orderBy sortKey reverse">
      <td>{{ name }}</td>
      <td>{{ age }}</td>
    </tr>
  </tbody>
</table>

data: {
  sortKey: 'name',

  reverse: false,

  columns: ['name', 'age'],

  users: [
    { name: 'John', age: 50 },
    { name: 'Jane', age: 22 }
    // ...
  ]
},

methods: {
  sortBy: function(sortKey) {
    this.reverse = (this.sortKey == sortKey) ? ! this.reverse : false;

    this.sortKey = sortKey;
  }
}

[demo]