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

kse8i1jr  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(118)

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

gdrx4gfi

gdrx4gfi1#

当你改变列表中一个项目的位置时(通过拖动或其他方式),是否会触发一个你可以绑定的事件?如果没有别的,如果你拖动它们,也许你可以绑定到mouseup。模型是在集合中吗?或者你可以从DOM元素中获得你的 Backbone.js 视图对象吗?
可能是这样的,假设你已经使用jQuery.data将Backbone视图对象存储在view_object属性中,并且已经将相应的模型作为options对象的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

} );

相关问题