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 が必要な理由