Luk*_*101 4 javascript angularjs angularjs-directive
我有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;
});
}
};
};
Run Code Online (Sandbox Code Playgroud)
以下是我不理解的部分:
首先,感谢阅读源!
ctrl是所需指令的控制者(在这种情况下来自ngModel找到的require:)
$ parsers和$ formatters- http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController
简而言之,并且要记住Angular必须跟踪ngModel数据的DOM表示以及Angular模型的表示,$解析器处理将ngModel数据的DOM侧表示转换为数据的角度模型视图.$ formatters获取模型视图并将其转换为DOM适当的表示形式.所以他们是一对,$解析器从DOM到模型,$ formatters回归.
最后,ngModel. ngList处理ngModel数据.所以它需要找到一个ngModel指令,该指令具有ngList应该处理的数据(这需要我们完整的循环,回到ctrl)
| 归档时间: |
|
| 查看次数: |
593 次 |
| 最近记录: |