我有 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) {:我需要理解这一点,因为我将尝试实现类似的东西
- 要求:'ngModel':为什么需要 ngModel