如何在Backbone中对列表进行排序时如何更新模型的订单属性?

时间:2012-05-03 22:24:58

标签: jquery javascript-events backbone.js

我在Backbone.js应用程序中有一个可排序的列表(我没有使用jqueryui可排序,我自己写了一个小的)。对于每个列表项,它的Backbone模型都有一个order属性,它在列表中保持其顺序。每次我对此列表进行排序时,我都希望为每个已更改位置的列表项更改此顺序属性。但问题是,我不知道如何检测排序动作。也许在被拖动的项目模型中检测此操作很容易,但随着此项目的移动,其他项目的位置会受到影响,如何检测这些项目模型中的排序操作,然后更改它们的顺序属性?

1 个答案:

答案 0 :(得分:0)

当您更改列表中项目的位置时(通过拖动,或者然而),是否会触发您可以绑定的事件?如果没有别的,如果您拖动它们,也许您可​​以绑定到mouseup。模型是集合吗?或者你可以从DOM元素到达你的Backbone视图对象吗?

也许是这样的。这假定您已使用view_object将Backbone视图对象存储在jQuery.data属性中,并且您已将相应的模型作为model传递给视图构造函数选项对象的属性。

var Item_View = Backbone.View.extend( {

  initialize : function ( options ) {

    this.$el.data( 'view_object', this );

  },

  events : {

    "mouseup" : function () {

      $( "#items .item" ).each( function ( index ) {

        $( this ).data( 'view_object' ).model.set( 'order', index );

      } );

    }
    // "mouseup"

  }
  // events

} );


var model = new Item_Model( {} );

var view = new Item_View( {

  model : model

} );