4

AngularJS が開発した ngList ディレクティブのコードがあります。それに似たものを実装したいのですが、コードの一部がわかりません。ここにコードがあります

var ngListDirective = function() {
  return {
    require: 'ngModel',
    link: function(scope, element, attr, ctrl) {
      var match = /\/(.*)\//.exec(attr.ngList),
          separator = match && new RegExp(match[1]) || attr.ngList || ',';

      var parse = function(viewValue) {
        var list = [];

        if (viewValue) {
          forEach(viewValue.split(separator), function(value) {
            if (value) list.push(trim(value));
          });
        }

        return list;
      };

      ctrl.$parsers.push(parse);
      ctrl.$formatters.push(function(value) {
        if (isArray(value)) {
          return value.join(', ');
        }

        return undefined;
      });
    }
  };
};

ここに私が理解していない部分があります:

  • function(scope, element, attr, ctrl) : ctrl 変数。これについての詳細はどこで読むことができますか。
  • ctrl.$parsers.push(パース); : この使用法について詳しくはどこで読むことができますか
  • ctrl.$formatters.push(function(value) { : 同様のものを実装しようとしているので、これを理解する必要があります
  • require: 'ngModel' : ngModel が必要な理由
4

1 に答える 1