0

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

4

1 回答 1

0

当您更改列表中某个项目的位置时(通过拖动或但是),是否会触发您可以绑定到的事件?如果不出意外,如果你正在拖动它们,也许你可以绑定到mouseup. 模型是否在集合中?或者您可以从 DOM 元素访问您的 Backbone 视图对象吗?

也许是这样的。这假设您已使用 将 Backbone 视图对象存储在view_object属性中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

} );
于 2012-05-04T13:28:30.100 回答