Skip to content

Instantly share code, notes, and snippets.

@jasonaden
Created October 14, 2014 18:58
Show Gist options
  • Select an option

  • Save jasonaden/087959e16215c1049840 to your computer and use it in GitHub Desktop.

Select an option

Save jasonaden/087959e16215c1049840 to your computer and use it in GitHub Desktop.
View & Edit Mode for Angular Forms
(function (angular) {
var mod = angular.module('ng.forms', []);
['form', 'ngForm'].forEach(function(name) {
return mod.directive(name, function($parse) {
return {
restrict: 'EA',
require: 'form',
link: function(scope, element, attrs, ngForm) {
var startMode = $parse(attrs.startMode)(scope) || 'edit'
var viewMode = (startMode === 'view' ? true : false);
ngForm.$editMode = !viewMode;
ngForm.$viewMode = viewMode;
ngForm.$setEditMode = function() {
return ngForm.$editMode = !(ngForm.$viewMode = false);
};
ngForm.$setViewMode = function() {
return ngForm.$viewMode = !(ngForm.$editMode = false);
};
}
};
});
});
['input', 'textarea', 'select'].forEach(function(name) {
return mod.directive(name, function($timeout) {
return {
restrict: 'E',
require: '^?form',
link: function(scope, element, attr, formCtrl) {
var formCtrl = ctrls[1];
if (!formCtrl) return;
scope.$watch(function() {return formCtrl.$editMode;},
function(newVal, oldVal) {
return element.prop('disabled', !newVal);
});
}
};
});
});
})(angular);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment