javascript - ng-model 在输入和显示时操纵值

标签 javascript angularjs angular-ngmodel angularjs-ng-model

我有以下变量:

$scope.pixelWidth = "30px";

我有一个像这样的输入框:

<input ng-model="pixelWidth" />

我希望输入框内仅包含数字,但在键入时仍将 px 插入 $scope.pixelWidth 中。

有办法实现这一点吗?

最佳答案

是的,您需要创建一个指令并将格式化程序和解析器添加到 ngModelController 。请参阅working version on plunker

指令:

app.directive('modelSuffix', [function() {
  return {
    restrict: 'AE',
    require: '^ngModel',
    link: function(scope, element, attributes, ngModelController) {
          var suffix = attributes.modelSuffix;
          // Pipeline of functions called to read value from DOM 
          ngModelController.$parsers.push(function(value) {
            return value + suffix;
          });

          // Pipeline of functions called to display on DOM
          ngModelController.$formatters.push(function(value) {
            return value.replace(suffix, '');
          });
        }
  }
}]);

像这样使用它:

<input ng-model="pixelWidth" model-suffix="px"/>

关于javascript - ng-model 在输入和显示时操纵值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31331369/

相关文章:

javascript - React 过滤器然后交换数组元素

javascript - 如何在 Cookie 上强制 HttpOnly FALSE,以便 JavaScript 可以使用 PHP 跨域读取它们?

javascript - 带有 ng-repeat 水平标题的 ng-Grid

javascript - 如何在 Angular 上制作自定义指令?

javascript - 在输入上定义表单控件时,NgModel.viewToModelUpdate 不起作用

angularjs - 通过 angularjs 模型查找字段

javascript - 使用 Microsoft IME 日语输入数字时,AngularJs ngModel 值重复

javascript - 以模式打开图像(在一个 div img 中链接到另一个)

javascript - 为什么我无法从 Node JS 的 http 服务器获得前几个响应?

html - 可点击的大屏幕背景图像