【发布时间】:2013-06-25 01:17:11
【问题描述】:
我需要从我的应用程序的用户那里收集变化率(百分比)。这是我正在使用的文本输入:
<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);
}
};
});
这种工作,但我不应该为此任务使用过滤器吗?我该怎么做?
【问题讨论】:
-
过滤器用于将一个数组的内容映射到另一个数组。我认为你应该在控制器中进行转换。是什么阻止您使用控制器。
-
hmm - 我认为过滤器是针对
filtering值的,所以我认为格式、转换等应该在过滤器中 -
没有字段需要经过这个转换,我认为逻辑会在控制器中重复
-
过滤器不更新模型数据,它们只是变换。指令是正确的方法。让我考虑一下
-
我喜欢指令,但在这种情况下,我认为过滤器是更好的选择。它使(imo)一个更易读的模板有一个东西| asPercent 而不是指令。
标签: javascript angularjs angularjs-filter