相关疑难解决方法(0)

过滤输入中的ng-model

我有一个文本输入,我不想让用户使用空格,键入的所有内容都将变为小写.

我知道我不允许在ng-model上使用过滤器,例如.

ng-model='tags | lowercase | no_spaces'
Run Code Online (Sandbox Code Playgroud)

我查看了创建自己的指令但是添加了函数$parsers并且$formatters没有更新输入,只更新了其他元素ng-model.

如何更改我正在输入的输入?

我本质上是在尝试创建"标签"功能,就像StackOverflow上的功能一样.

dom-manipulation angularjs angularjs-filter angularjs-ng-model

123
推荐指数
5
解决办法
21万
查看次数

AngularJS:我应该使用过滤器将整数值转换为百分比吗?

我需要从应用程序的用户那里收集一个变化率 - 百分比.这是我正在使用的文本输入:

<label for="annual-change" class="pt-underline"> I am anticipating
<input id="annual-change" ng-model="calc.yrChange"  type="text" placeholder="0" /> % of growth annually.<br><br>
</label>
Run Code Online (Sandbox Code Playgroud)

现在我想要的是使用一个过滤器,它取用户输入的整数量,然后将它乘以0.01或除以之前将其转换为百分比,然后再将其100 发送到控制器进行计算

但我无法弄清楚过滤器的放置位置以及如何挂钩.所以我尝试了这样的指令:

    app.directive("percent", function($filter){
    var p = function(viewValue){
      console.log(viewValue);
      var m = viewValue.match(/^(\d+)/);
      if (m !== null)
        return $filter('number')(parseFloat(viewValue)/100);
    };

    var f = function(modelValue){
        return $filter('number')(parseFloat(modelValue)*100);
    };

    return {
      require: 'ngModel',
      link: function(scope, ele, attr, ctrl){
          ctrl.$parsers.unshift(p);
          ctrl.$formatters.unshift(f);
      }
    };
});
Run Code Online (Sandbox Code Playgroud)

这种工作,但我不应该使用过滤器来完成这项任务?我该怎么做呢?

javascript angularjs angularjs-filter

11
推荐指数
1
解决办法
1万
查看次数