diff options
| author | Vojta Jina | 2012-02-27 16:28:12 -0800 | 
|---|---|---|
| committer | Vojta Jina | 2012-02-28 18:22:41 -0800 | 
| commit | 4370d756e4e758f0e95e83390f7555cb9f48e6fe (patch) | |
| tree | b899b73c22ede0c3858faba346b51ecbf8096222 | |
| parent | 4e83399570391fe4a41ce4dc27c8a191f761d26d (diff) | |
| download | angular.js-4370d756e4e758f0e95e83390f7555cb9f48e6fe.tar.bz2 | |
refactor(directive.ngModel): rename emitValidity -> setValidity
| -rw-r--r-- | docs/content/guide/dev_guide.forms.ngdoc | 4 | ||||
| -rw-r--r-- | src/widget/form.js | 6 | ||||
| -rw-r--r-- | src/widget/input.js | 49 | ||||
| -rw-r--r-- | src/widget/select.js | 2 | ||||
| -rw-r--r-- | test/widget/formSpec.js | 18 | ||||
| -rw-r--r-- | test/widget/inputSpec.js | 24 | 
6 files changed, 52 insertions, 51 deletions
| diff --git a/docs/content/guide/dev_guide.forms.ngdoc b/docs/content/guide/dev_guide.forms.ngdoc index 97d82bb1..cbb73abc 100644 --- a/docs/content/guide/dev_guide.forms.ngdoc +++ b/docs/content/guide/dev_guide.forms.ngdoc @@ -297,9 +297,9 @@ This example shows how to implement a custom HTML editor widget in Angular.                  ctrl.formatters.push(function(value) {                    try {                      value = $sanitize(value || ''); -                    ctrl.emitValidity('HTML', true); +                    ctrl.setValidity('HTML', true);                    } catch (e) { -                    ctrl.emitValidity('HTML', false); +                    ctrl.setValidity('HTML', false);                    }                  }); diff --git a/src/widget/form.js b/src/widget/form.js index 306581e9..24f4ff42 100644 --- a/src/widget/form.js +++ b/src/widget/form.js @@ -16,8 +16,8 @@   *  - values are arrays of widgets that are invalid with given error.   *   * @description - * Form is a controller that keeps track of all registered widgets. - * + * `FormController` keeps track of all its widgets as well as state of them form, such as being valid/invalid or dirty/pristine. + *    * Each {@link angular.module.ng.$compileProvider.directive.form form} directive creates an instance   * of `FormController`.   * @@ -123,7 +123,7 @@ FormController.prototype.registerWidget = function(widget, alias) {   * @scope   * @description   * Directive that instantiates - * {@link angular.module.ng.$compileProvider.directive.form.FormController Form} controller. + * {@link angular.module.ng.$compileProvider.directive.form.FormController FormController}.   *   * If `name` attribute is specified, the controller is published to the scope as well.   * diff --git a/src/widget/input.js b/src/widget/input.js index ca5ecc2b..ecdb9d23 100644 --- a/src/widget/input.js +++ b/src/widget/input.js @@ -391,10 +391,10 @@ function textInputType(scope, element, attr, ctrl) {    var emit = function(regexp, value) {      if (isEmpty(value) || regexp.test(value)) { -      ctrl.emitValidity('PATTERN', true); +      ctrl.setValidity('PATTERN', true);        return value;      } else { -      ctrl.emitValidity('PATTERN', false); +      ctrl.setValidity('PATTERN', false);        return undefined;      }    }; @@ -425,10 +425,10 @@ function textInputType(scope, element, attr, ctrl) {      var minlength = parseInt(attr.ngMinlength, 10);      var minLengthValidator = function(value) {        if (!isEmpty(value) && value.length < minlength) { -        ctrl.emitValidity('MINLENGTH', false); +        ctrl.setValidity('MINLENGTH', false);          return undefined;        } else { -        ctrl.emitValidity('MINLENGTH', true); +        ctrl.setValidity('MINLENGTH', true);          return value;        }      }; @@ -442,10 +442,10 @@ function textInputType(scope, element, attr, ctrl) {      var maxlength = parseInt(attr.ngMaxlength, 10);      var maxLengthValidator = function(value) {        if (!isEmpty(value) && value.length > maxlength) { -        ctrl.emitValidity('MAXLENGTH', false); +        ctrl.setValidity('MAXLENGTH', false);          return undefined;        } else { -        ctrl.emitValidity('MAXLENGTH', true); +        ctrl.setValidity('MAXLENGTH', true);          return value;        }      }; @@ -461,10 +461,10 @@ function numberInputType(scope, element, attr, ctrl) {    ctrl.parsers.push(function(value) {      var empty = isEmpty(value);      if (empty || NUMBER_REGEXP.test(value)) { -      ctrl.emitValidity('NUMBER', true); +      ctrl.setValidity('NUMBER', true);        return value === '' ? null : (empty ? value : parseFloat(value));      } else { -      ctrl.emitValidity('NUMBER', false); +      ctrl.setValidity('NUMBER', false);        return undefined;      }    }); @@ -477,10 +477,10 @@ function numberInputType(scope, element, attr, ctrl) {      var min = parseFloat(attr.min);      var minValidator = function(value) {        if (!isEmpty(value) && value < min) { -        ctrl.emitValidity('MIN', false); +        ctrl.setValidity('MIN', false);          return undefined;        } else { -        ctrl.emitValidity('MIN', true); +        ctrl.setValidity('MIN', true);          return value;        }      }; @@ -493,10 +493,10 @@ function numberInputType(scope, element, attr, ctrl) {      var max = parseFloat(attr.max);      var maxValidator = function(value) {        if (!isEmpty(value) && value > max) { -        ctrl.emitValidity('MAX', false); +        ctrl.setValidity('MAX', false);          return undefined;        } else { -        ctrl.emitValidity('MAX', true); +        ctrl.setValidity('MAX', true);          return value;        }      }; @@ -508,10 +508,10 @@ function numberInputType(scope, element, attr, ctrl) {    ctrl.formatters.push(function(value) {      if (isEmpty(value) || isNumber(value)) { -      ctrl.emitValidity('NUMBER', true); +      ctrl.setValidity('NUMBER', true);        return value;      } else { -      ctrl.emitValidity('NUMBER', false); +      ctrl.setValidity('NUMBER', false);        return undefined;      }    }); @@ -522,10 +522,10 @@ function urlInputType(scope, element, attr, ctrl) {    var urlValidator = function(value) {      if (isEmpty(value) || URL_REGEXP.test(value)) { -      ctrl.emitValidity('URL', true); +      ctrl.setValidity('URL', true);        return value;      } else { -      ctrl.emitValidity('URL', false); +      ctrl.setValidity('URL', false);        return undefined;      }    }; @@ -539,10 +539,10 @@ function emailInputType(scope, element, attr, ctrl) {    var emailValidator = function(value) {      if (isEmpty(value) || EMAIL_REGEXP.test(value)) { -      ctrl.emitValidity('EMAIL', true); +      ctrl.setValidity('EMAIL', true);        return value;      } else { -      ctrl.emitValidity('EMAIL', false); +      ctrl.setValidity('EMAIL', false);        return undefined;      }    }; @@ -794,7 +794,7 @@ var NgModelController = ['$scope', '$exceptionHandler', 'ngModel',    /**     * @ngdoc function -   * @name angular.module.ng.$compileProvider.directive.ng:model.NgModelController#emitValidity +   * @name angular.module.ng.$compileProvider.directive.ng:model.NgModelController#setValidity     * @methodOf angular.module.ng.$compileProvider.directive.ng:model.NgModelController     *     * @description @@ -806,7 +806,7 @@ var NgModelController = ['$scope', '$exceptionHandler', 'ngModel',     * @param {string} name Name of the validator.     * @param {boolean} isValid Whether it should $emit `$valid` (true) or `$invalid` (false) event.     */ -  this.emitValidity = function(name, isValid) { +  this.setValidity = function(name, isValid) {      if (!isValid && this.error[name]) return;      if (isValid && !this.error[name]) return; @@ -890,7 +890,8 @@ var NgModelController = ['$scope', '$exceptionHandler', 'ngModel',   * @element input   *   * @description - * Is directive that tells Angular to do two-way data binding. It works together with `input`, `select`, `textarea`. You can easily write your own directives to use `ng:model` pretty easily. + * Is directive that tells Angular to do two-way data binding. It works together with `input`, + * `select`, `textarea`. You can easily write your own directives to use `ng:model` as well.   *   * `ng:model` is responsible for:   * @@ -901,7 +902,7 @@ var NgModelController = ['$scope', '$exceptionHandler', 'ngModel',   * - setting related css class onto the element (`ng-valid`, `ng-invalid`, `ng-dirty`, `ng-pristine`),   * - register the widget with parent {@link angular.module.ng.$compileProvider.directive.form form}.   * - * For examples, how to use `ng:model`, see: + * For basic examples, how to use `ng:model`, see:   *   *  - {@link angular.module.ng.$compileProvider.directive.input input}   *    - {@link angular.module.ng.$compileProvider.directive.input.text text} @@ -1080,10 +1081,10 @@ var requiredDirective = [function() {        var validator = function(value) {          if (attr.required && isEmpty(value)) { -          ctrl.emitValidity('REQUIRED', false); +          ctrl.setValidity('REQUIRED', false);            return null;          } else { -          ctrl.emitValidity('REQUIRED', true); +          ctrl.setValidity('REQUIRED', true);            return value;          }        }; diff --git a/src/widget/select.js b/src/widget/select.js index e7386147..f3c0f3dd 100644 --- a/src/widget/select.js +++ b/src/widget/select.js @@ -139,7 +139,7 @@ var selectDirective = ['$compile', '$parse', function($compile,   $parse) {        // required validator        if (multiple && (attr.required || attr.ngRequired)) {          var requiredValidator = function(value) { -          ctrl.emitValidity('REQUIRED', !attr.required || (value && value.length)); +          ctrl.setValidity('REQUIRED', !attr.required || (value && value.length));            return value;          }; diff --git a/test/widget/formSpec.js b/test/widget/formSpec.js index bc5f3ea7..6387241f 100644 --- a/test/widget/formSpec.js +++ b/test/widget/formSpec.js @@ -38,7 +38,7 @@ describe('form', function() {          '</form>')(scope);      var form = scope.form; -    widget.emitValidity('REQUIRED', false); +    widget.setValidity('REQUIRED', false);      expect(form.alias).toBe(widget);      expect(form.error.REQUIRED).toEqual([widget]); @@ -107,11 +107,11 @@ describe('form', function() {      var child = scope.child;      var input = child.text; -    input.emitValidity('MyError', false); +    input.setValidity('MyError', false);      expect(parent.error.MyError).toEqual([input]);      expect(child.error.MyError).toEqual([input]); -    input.emitValidity('MyError', true); +    input.setValidity('MyError', true);      expect(parent.error.MyError).toBeUndefined();      expect(child.error.MyError).toBeUndefined();    }); @@ -138,12 +138,12 @@ describe('form', function() {      expect(child).toBeDefined();      expect(input).toBeDefined(); -    input.emitValidity('myRule', false); +    input.setValidity('myRule', false);      expect(input.error.myRule).toEqual(true);      expect(child.error.myRule).toEqual([input]);      expect(parent.error.myRule).toEqual([input]); -    input.emitValidity('myRule', true); +    input.setValidity('myRule', true);      expect(parent.error.myRule).toBeUndefined();      expect(child.error.myRule).toBeUndefined();    }); @@ -177,18 +177,18 @@ describe('form', function() {      it('should have ng-valid/ng-invalid css class', function() {        expect(doc).toBeValid(); -      widget.emitValidity('ERROR', false); +      widget.setValidity('ERROR', false);        scope.$apply();        expect(doc).toBeInvalid(); -      widget.emitValidity('ANOTHER', false); +      widget.setValidity('ANOTHER', false);        scope.$apply(); -      widget.emitValidity('ERROR', true); +      widget.setValidity('ERROR', true);        scope.$apply();        expect(doc).toBeInvalid(); -      widget.emitValidity('ANOTHER', true); +      widget.setValidity('ANOTHER', true);        scope.$apply();        expect(doc).toBeValid();      }); diff --git a/test/widget/inputSpec.js b/test/widget/inputSpec.js index 69baba06..d9f6b7b3 100644 --- a/test/widget/inputSpec.js +++ b/test/widget/inputSpec.js @@ -49,44 +49,44 @@ describe('NgModelController', function() {    }); -  describe('emitValidity', function() { +  describe('setValidity', function() {      it('should emit $invalid only when $valid', function() {        var spy = jasmine.createSpy('$invalid');        scope.$on('$invalid', spy); -      ctrl.emitValidity('ERROR', false); +      ctrl.setValidity('ERROR', false);        expect(spy).toHaveBeenCalledOnce();        spy.reset(); -      ctrl.emitValidity('ERROR', false); +      ctrl.setValidity('ERROR', false);        expect(spy).not.toHaveBeenCalled();      });      it('should set and unset the error', function() { -      ctrl.emitValidity('REQUIRED', false); +      ctrl.setValidity('REQUIRED', false);        expect(ctrl.error.REQUIRED).toBe(true); -      ctrl.emitValidity('REQUIRED', true); +      ctrl.setValidity('REQUIRED', true);        expect(ctrl.error.REQUIRED).toBeUndefined();      });      it('should set valid/invalid', function() { -      ctrl.emitValidity('FIRST', false); +      ctrl.setValidity('FIRST', false);        expect(ctrl.valid).toBe(false);        expect(ctrl.invalid).toBe(true); -      ctrl.emitValidity('SECOND', false); +      ctrl.setValidity('SECOND', false);        expect(ctrl.valid).toBe(false);        expect(ctrl.invalid).toBe(true); -      ctrl.emitValidity('SECOND', true); +      ctrl.setValidity('SECOND', true);        expect(ctrl.valid).toBe(false);        expect(ctrl.invalid).toBe(true); -      ctrl.emitValidity('FIRST', true); +      ctrl.setValidity('FIRST', true);        expect(ctrl.valid).toBe(true);        expect(ctrl.invalid).toBe(false);      }); @@ -96,11 +96,11 @@ describe('NgModelController', function() {        var spy = jasmine.createSpy('$valid');        scope.$on('$valid', spy); -      ctrl.emitValidity('ERROR', true); +      ctrl.setValidity('ERROR', true);        expect(spy).not.toHaveBeenCalled(); -      ctrl.emitValidity('ERROR', false); -      ctrl.emitValidity('ERROR', true); +      ctrl.setValidity('ERROR', false); +      ctrl.setValidity('ERROR', true);        expect(spy).toHaveBeenCalledOnce();      });    }); | 
