应该't$parser/$formatter在不同的位置运行,而不是链接

Shouldn't $parsers/$formatters be run at a different place rather than link?

本文关键字:位置 运行 链接 parser formatter 应该      更新时间:2023-09-26

AFAIK-angular中的link函数用于"注册DOM侦听器以及更新DOM。"

但看看这个样本

app.directive('changecase', function () {
  return {
    restrict: 'A',
    require: 'ngModel',
    link: function (scope, element, attrs, ngModel) {
      //format text going to user (model to view)
      ngModel.$formatters.push(function(value) {
        return value.toUpperCase();
      });
      //format text from the user (view to model)
      ngModel.$parsers.push(function(value) {
        return value.toLowerCase();
      });
    }
  }
});

我看到了许多使用链接功能的例子,以便"防火墙"将错误值输入模型,并将out输出到视图。

问题

这既不是操纵dom,也不是处理listener。

在我看来,这只是一个奇怪的地方——把那些"防火墙"放在link功能中

放置$parsers/$formatters的位置是否正确?

AFAIK——angular中的链接函数用于"注册DOM侦听器"以及更新DOM。"

这些规则不是刻在石头上的,它们总是出于实际考虑。预链接和后链接功能是用户可以获得所需控制器(ngModel)的地方。

所以,是的,link是一个合适的地方。