【发布时间】:2015-08-11 05:25:17
【问题描述】:
我已定义自定义过滤器以将输入数字格式化为特定格式,即 hh:mm
过滤器
app.filter('formatDuration', function () {
return function (duration) {
if (angular.isUndefined(duration) || duration === null || duration.toString().trim() == '') return '';
var hour = Math.floor(duration / 60);
var min = duration % 60;
if (min < 10) {
min = '0' + min;
}
return hour + ':' + min;
};
});
但是,如果我无法将它与我的input type = text field data-ng-model = "myModel" 绑定。
当我在输入字段的 data-ng-model 中输入内容时,它没有与我的过滤器连接。
<input type="text" name="Duration" class="form-control" data-ng-model="{{Duration | formatDuration" />
但是,如果我将它与值绑定,例如value = "{{data-ng-model = Duration | formatDuration}}" 它与我的自定义过滤器连接并进行所需的转换,但不显示输入字段内的格式化值,而是显示最初输入的内容..
<input type="text" name="Duration" class="form-control" data-ng-model="Duration" value="{{Duration | formatDuration}}" />
所以,我有几点需要澄清
1) 我可以将客户过滤器与 data-ng-model 绑定吗?根据 AngualrJs 网站是的,应该是 2) 如果是这样,那我错在哪里?
值得一提的是,我的输入字段在 ng-repeat...
【问题讨论】:
-
不,你不能。你需要一个 $parser/$formatter 组合。过滤器是单向的:它可以将数字格式化为持续时间字符串,但不能解析持续时间字符串并将其变为数字。对于 ng-model,你需要两者。 docs.angularjs.org/api/ng/type/…
-
@JB Nizet,如果可能的话,你能分享一个例子或工作 plnkr 吗?我从未使用过 $parser/$formatter 组合。