我目前正在开发一个日历,其中的活动可以拖放到其他日子。 当一个活动被放入不同的一天时,我会使用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);