zmii
zmii

Reputation: 4277

Are there default parsers/formatter in Angular 1.x?

Wondering are there any default parsers of formatters in Angular 1.x (specifically 1.4.4) (documentation here) to understand if I should do unshift in some cases when I add new handler to those arrays.

As documentation says e.g. about parsers:

Array of functions to execute, as a pipeline, whenever the control reads value from the DOM.

Is this (and formatters) array initially empty?

Upvotes: 1

Views: 80

Answers (1)

gyc
gyc

Reputation: 4360

Yes, you should unshift to add parsers or formatters:

Bother $parsers and $formatters are empty by default;

function yourFormat() {
	return {
		require: 'ngModel',
		link: function ($scope, $elem, $attrs, $ctrl) {
		    var ngModelCtrl = $ctrl;
			console.log(ngModelCtrl.$formatters);
			console.log(ngModelCtrl.$parsers);

			console.log("adding parsers and formatters");

			ngModelCtrl.$formatters.unshift(function (value) {
				return value + "+";
			});

			ngModelCtrl.$parsers.unshift(function (value) {
				return value + "-";
			});

			console.log(ngModelCtrl.$formatters);
			console.log(ngModelCtrl.$parsers);
		}
	}
}
function YourController() {
  this.yourmodel = {};
}

angular
	.module('app', []);
angular
	.module('app')
	.directive('yourFormat', yourFormat)
        .controller('YourController', YourController);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js"></script>
<div ng-app="app">
<form ng-controller="YourController as c">
  <your-format ng-model="c.yourmodel"></your-format>
</form>
</div>

Upvotes: 1

Related Questions