日期格式设置在范围内。
过滤器使用它来显示标签中的日期,并通过指令将 $ formatters 中的函数从 ngModel 添加到输入格式化日期。
当范围中的格式设置更改时,通过过滤器显示的日期将以角度进行刷新。
但不是通过$ formatters的输入字段。
强制刷新我们发现的唯一方法是将所有字段设置为null,然后在$ timeout中将它们重置为要显示的值以强制重新执行$ formatters。
有更好的方法吗?
答案:
通过合并Sergey Moiseev的回答并回答11380866,我能够为该指令添加令人满意的解决方案。
将设置存储在rootscope中(因为它在solated范围内的批量指令中使用)并通过通用代码对其作出反应:
$rootScope.$watch('userSettings.dateFormat.fmt', function (newVal, oldVal, scope) {
if (newVal != oldVal) {
var viewValue = ngModelCtrl.$modelValue;
for (var i in ngModelCtrl.$formatters) {
viewValue = ngModelCtrl.$formatters[i](viewValue);
}
ngModelCtrl.$viewValue = viewValue;
ngModelCtrl.$render();
}
});
谢谢!