Tôi đã viết hai chỉ thị. Một trong số đó được sử dụng để nhập số với các đơn vị (như "1m"):Vấn đề với hai chỉ thị trên cùng một mô hình
angular.module('ng', [])
.directive('unit', function() {
return {
require: 'ngModel',
link: function (s, e, attributes, ngModel) {
ngModel.$parsers.push(function (i) {
return i + attributes.unit;
});
ngModel.$formatters.push(function (i) {
return (i + '').replace(attributes.unit, '');
});
}
}
});
thứ hai thay thế ,
với .
, vì nhiều người ở châu Âu sử dụng một số thập phân dấu phẩy thay vì một dấu thập phân và tôi muốn tôi các giá trị được chuẩn hóa.
angular.module('ng', [])
.directive('numberWithPoint', function() {
return {
require: 'ngModel',
link: function (s, e, attributes, ngModel) {
ngModel.$parsers.push(function (i) {
return i.replace(',', '.');
});
}
}
});
Việc sử dụng sẽ là:
<input type="text" ng-model="howLongSomethingIs" unit="m" number-with-point /> m
Vấn đề: chỉ thị unit
hoạt động tuyệt vời nếu nó là một mình, nếu tôi thêm chỉ thị number-with-point
, các unit
mất không có tác dụng (giá trị hiển thị là dành cho ví dụ 1m
không phải 1
.
Tôi đã cố gắng làm rối tung tài sản priority
trong đối tượng return
, nhưng không có gì xảy ra.
Làm cách nào để hai chỉ thị này hoạt động cùng nhau?
Trong này jsfiddle, có vẻ như nó hoạt động, nhưng nó sử dụng Góc 1.2.1. Tôi đang sử dụng Góc 1.3.14. Có ai biết làm thế nào để làm cho jsfiddle sử dụng phiên bản khác?
Bạn có thể kết nối một plunker/jsbin của hai chỉ thị này không? Điều đó chắc chắn sẽ giúp gỡ lỗi nó. –
Ok, ý tưởng hay. Đợi một chút –
Xem chỉnh sửa. Tôi đã thêm một số ý kiến –