我正在为 AngularJS JavaScript 寻找仅数字输入的自定义指令,并且我得到了一个工作指令,但是当我将它用于绑定(bind)到 Controller 的 body 或 div 内部的输入框时,它不起作用。
HTML:
<div ng-app="app" ng-controller="xyz">
<p>Demo of AngularJS Numbers Only Directive</p>
<p>Input below will accept only numbers.</p>
<p><input type="text" ng-model="val" numbers-only /></p>
</div>
脚本:
var app = angular.module('app', []);
app.directive('numbersOnly', function () {
return {
require: 'ngModel',
link: function (scope, element, attr, ngModelCtrl) {
function fromUser(text) {
if (text) {
var transformedInput = text.replace(/[^0-9]/g, '');
if (transformedInput !== text) {
ngModelCtrl.$setViewValue(transformedInput);
ngModelCtrl.$render();
}
return transformedInput;
}
return undefined;
}
ngModelCtrl.$parsers.push(fromUser);
}
};
});
JSFiddle:Click Here
如果我从 div 中删除 Controller 部分,它就可以正常工作。
最佳答案
它不起作用,因为您的 Controller 未定义,从而引发错误,也破坏了 Angular Directive(指令)。
只需在 JS 中定义 Controller 即可:
app.controller('xyz', function() {return {};})
它应该可以工作( Updated JSFiddle )
关于javascript - 仅用于数字输入的自定义指令不适用于 Controller 绑定(bind) div 内的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39098297/