2

我目前正在开发一个日历,可以将活动拖放到其他日期。当一个活动被放到不同的日子时,我使用 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,但该函数永远不会重新评估自身,但我能够接收到新的 revert 值(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);
4

0 回答 0