angular.module 'NgDestroy', ['Factories']
.directive 'ngDestroy', ($injector, factoryName) -> restrict: 'A' require: '?ngCallback' link: (scope, element, attributes, ngCallbackCtrl) -> console.warn "ngDestroy is deprecated. Please consider using mrDestroy in its stead." element.bind 'click', (event) -> form = element[0] until form.nodeName == 'FORM' || !form form = form.parentNode break if !form form ||= element[0] return if attributes.disabled || form.disabled destroy(attributes.ngDestroy,attributes.ngContext) destroy = (modelName,listName) -> factory = factoryName(modelName) if listName list = scope for childScope in listName.split('.') list = list[childScope] else list = scope[factory] resource = list #Save resource for later if server returns success list = $injector.get(factory) object = {id: scope[modelName].id} list.delete(object).$promise #remove from server .then (returnData)-> resource.drop(scope[modelName]) #remove from view ngCallbackCtrl.evaluate(returnData) if !!ngCallbackCtrl