我需要編寫一個使用Angular 1.5.5的屬性指令,它基本上限制文本框的按鍵事件上的輸入。因此,它應該是這樣的屬性指令訪問元素和添加列表器
<input type="number" name="age" id="age" restrict-char="['e','-']" />
我們怎樣才能寫出一個屬性指令,而無需使用鏈接功能。我不想使用鏈接功能,因爲我會將我的代碼庫移植到Angular 2.0中,並且鏈接功能不受支持。
我需要編寫一個使用Angular 1.5.5的屬性指令,它基本上限制文本框的按鍵事件上的輸入。因此,它應該是這樣的屬性指令訪問元素和添加列表器
<input type="number" name="age" id="age" restrict-char="['e','-']" />
我們怎樣才能寫出一個屬性指令,而無需使用鏈接功能。我不想使用鏈接功能,因爲我會將我的代碼庫移植到Angular 2.0中,並且鏈接功能不受支持。
不確定這是否是你想要的,但是你可以在ngModelController上使用$ parser並且在任何事件上設置ng-model-options來更新。
angular.module('app', []);
angular.module('app').directive('restrictChar',() => {
return {
restrict: 'A',
require: 'ngModel',
scope: {
restricted: '=restrictChar'
},
controller: function ($scope, $element) {
const ngModel = $element.controller('ngModel');
ngModel.$parsers.unshift((value) => {
const newVal = value
.split('')
.filter((char) => $scope.restricted.indexOf(char) === -1)
.join('');
$element.val(newVal);
return newVal;
});
}
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.js"></script>
<div ng-app="app">
<input type="text" ng-model="x" name="age" id="age" restrict-char="['e','-']" ng-model-options="{updateOn: 'keyup'}" /><br>
{{x}}
</div>
你就不能使用輸入'pattern'? – charlietfl
是啊我試過了,ng-pattern在按鍵上不起作用。這意味着我將不得不將事件列表添加到所有文本框中,無論我需要限制該輸入。 – ATHER