【问题标题】:Are there default parsers/formatter in Angular 1.x?Angular 1.x 中是否有默认的解析器/格式化程序?
【发布时间】:2016-11-15 20:55:44
【问题描述】:
想知道 Angular 1.x(特别是 1.4.4)(documentation here) 中是否有任何默认的格式化程序解析器,以了解在某些情况下当我向这些数组添加新处理程序时是否应该执行 unshift。
正如文档所说,例如关于解析器:
每当控件从 DOM 读取值时,作为管道执行的函数数组。
这个(和格式化程序)数组最初是空的吗?
【问题讨论】:
标签:
javascript
angularjs
forms
formatter
【解决方案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>