как правильно связать поведение пользовательского интерфейса jquery в метеоре?

Я пытаюсь создать группу перетаскиваемых объектов DOM с помощью пользовательского интерфейса jQuery .draggable(), которые заполняются через подписки Meteor. Код, который я придумал, выглядит следующим образом:

Meteor.subscribe('those_absent', function() {
     $( "li.ui-draggable" ).draggable( { revert: "invalid" } );
});
Meteor.subscribe('those_present', function() {
     $( "li.ui-draggable" ).draggable( { revert: "invalid" } );
});

Они соответствуют некоторым вызовам Meteor.publish(), так что при каждом изменении коллекции поведение .draggable()будет Прилагается. По крайней мере, это было моим намерением.

Однако это работает только один раз - после того, как один из этих

  • был перетащен, их больше нельзя перетаскивать.

    Когда объекты отбрасываются, я запускаю пользовательское событие, привязанное к Шаблонудля элемента, например так

        $( "#c_absent .inner-drop" ).droppable({
            drop: function( event, ui ) {
                ui.draggable.trigger('inout.leave');
            }
        });
    
    
      Template.loftie_detail.events = {
          'inout.leave': function (e) {
              Lofties.update({_id:this._id}, {$set: {present: 'N' }});
          }
      };
    

    Итак, я думаю, что это изменение в коллекции при отбрасывании должно распространиться по процессу pub/sub и повторно запустить строку .draggable()выше. Но, похоже, это не так.

    Полный код для этого можно увидеть здесь https: //github.com/sbeam/in-o ut/blob/master/client/inout.js, а приложение работает по адресу http://inout.meteor.com/(есть некоторые другие, вероятно, не связанные проблемы с элементами, случайно теряющими значения или полностью исчезает из пользовательского интерфейса)

    Так что, если мое понимание того, как работает pub/sub в Meteor, не соответствует действительности, было бы неплохо узнать об этом.Или есть более эффективный способ добиться этой привязки поведения пользовательского интерфейса, который работает без нее?

  • 8
    задан Dan Dascalescu 16 November 2012 в 11:48
    поделиться