我需要从应用程序的用户那里收集变化率(以百分比为单位)。这是我正在使用的文本输入:
<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>
现在,我想要的是使用一个过滤器,它获取用户输入的整数,并通过将其乘以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);
}
};
});
这种方法有效,但我不应该为此任务使用过滤器吗?我该怎么做?
好吧,你只是用ctrl做了一个绝对正确的方法$解析器和ctrl$格式化程序你可以省去$filter的东西,那里根本不需要它。只要检查一下,他们也没有使用过滤器。
我认为您应该使用指令。如果您认为要重新使用JQuery来开始操作DOM元素,那么指令可能就是您想要的。
这是一个筛选器示例:http://embed.plnkr.co/TT6ZwOF6nYXwMcemR3JF/preview
您可以做的是过滤您作为监视事件的一部分输入的值。然而,这取决于您的具体用例。