jquery draggable以编程方式恢复

时间:2014-01-14 14:30:40

标签: javascript jquery jquery-ui-draggable jquery-ui-droppable durandal-2.0

我目前正在开发一个日历,其中的活动可以拖放到其他日子。 当一个活动被放入不同的一天时,我会使用durandal的对话框插件显示一个自定义模式。问题是当用户关闭模态时,活动必须恢复到其原始位置。删除活动时,将调用以下代码:

function showDroppedActivityModal(obj) {
    require(['modals/droppedActivityModal/droppedActivityModal', 'moment'], function(droppedActivityModal, moment) {
        droppedActivityModal.show(obj).then(function(response) {
            if(response !== false) {
                ...
            }
            // dialog closes
            else {
                calendarView.revertActivity.notify({ revert: true})
            }
        });
    });
}

在我的calendarView中,我实现了revertActivity事件以将revert设置为true,但该函数从不重新计算自身,但我能够收到新的恢复值(true)。

$(activity).draggable({
    revert: function() {
        var revert = false;
        self.revertActivity.attach(function(sender, args) {
            revert = args.revert;
        });
        return revert;
    }
});

自定义事件代码:

function CalendarEvent(sender) {
    this._sender = sender;
    this._listeners = [];
}

CalendarEvent.prototype = {
    attach : function (listener) {
        this._listeners.push(listener);
    },

    notify : function (args) {
        var index;
        for (index = 0; index < this._listeners.length; index += 1) {
            this._listeners[index](this._sender, args);
        }
    },

    remove : function (listener){
        this._listeners.remove(listener);
    }
};

this.revertActivity = new CalendarEvent(this);

0 个答案:

没有答案