Angular 1.x中是否有默认的解析器/格式化程序?

时间:2016-07-13 10:15:41

标签: javascript angularjs forms formatter

想知道在Angular 1.x(特别是1.4.4)(documentation here)中是否有格式化程序的默认解析器,以便在我向这些处理程序添加新处理程序的某些情况下我是否应该unshift阵列。

正如文件所述,例如关于解析器:

  

当控件从DOM读取值时,作为管道执行的函数数组。

这个(格式化程序)数组最初是空的吗?

1 个答案:

答案 0 :(得分:1)

是的,您应该取消添加解析器或格式化程序:

打扰$parsers$formatters默认为空;



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>
&#13;
&#13;
&#13;