你能解释一下ngList指令吗?
Can you explain the ngList 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;
});
}
};
};
以下是我不明白的部分:
- 函数(范围、元素、属性、控制):ctrl 变量。我在哪里可以阅读更多关于这个的信息。
- ctrl.$parsers.push(parse);:在哪里可以阅读有关此用法的更多信息
- ctrl.$formatters.push(function(value) {:我需要理解这一点,因为我将尝试实现类似的东西 require: 'ngModel
- ': 为什么需要 ngModel
首先,感谢阅读源代码!
ctrl
是所需指令的控制器(在本例中来自require:
中找到的ngModel
)
$parsers和$formatters- http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController
简而言之,请记住,Angular 必须跟踪ngModel
数据的 DOM 表示以及 Angular 模型的表示,$parsers处理将ngModel
数据的 DOM 端表示转换为数据的角度模型视图。 $formatters获取模型视图并将其转换为 DOM 适当的表示形式。 所以它们是一对,$parsers从DOM到模型,$formatters回到模型。
最后,ngModel
. ngList
处理ngModel
数据。 所以它需要找到一个ngModel
指令,其中包含ngList应该处理的数据(这需要我们绕一圈,回到ctrl
)
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 参数变量出现ngTable指令问题
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 使用每次都不同的transclude重复指令
- 打开一个模态并将其链接到AngularJS中的指令
- 从html创建一个指令,该指令按类名应用函数
- 将JSON对象传递给angular指令
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- JavaScript指令不能像我想象的那样工作
- AngularJs指令,该指令创建内部有数据对象的新指令
- AngularJS指令只识别双向绑定类型
- 从控制器继承了隔离的作用域以生成可重用的指令
- AngularJS指令出错-无法读取属性'编译'的未定义
- Angular指令在alertify setContent内容中不起作用
- 对父作用域的指令更新延迟了一步
- 指令的模板必须只有一个根元素:With restrict E&替换true
- AngularJS指令单元测试中未定义的函数
- 指令加载真的很长,检查加载时间的方法
- AngularJS指令,在元素后插入HTML
- 你能解释一下ngList指令吗?