javascript - 仅用于数字输入的自定义指令不适用于 Controller 绑定(bind) div 内的 HTML

标签 javascript html angularjs

我正在为 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/

相关文章:

javascript - 麻烦评估函数定义(...在 JavaScript 中)

javascript - 如何用另一个 Div 替换一个 Div 但只替换一次

javascript - 从数据库中提取数据并显示在排行榜中

javascript - 如何影响烛台上色/下色类别

javascript - 使用变量和循环创建 "onclick"函数

javascript - 将php中奇怪的json字符串解析成js

javascript - Angular 选择过滤器 显示全部

HTML 按钮不会重定向到 Facebook 页面

javascript - 使用 Angular 按当前日期过滤 JSON 数据

jquery - 我可以将 jQuery.ajax 与 Angular JS Promise api 一起使用吗?