指令的“type”属性有什么作用?我似乎无法找到它记录。
以下是其用法示例: https://github.com/crudbetter/angular-charts/blob/master/src/piechart.js#L81
这种用法只是创建一个未使用的属性,还是实际上有某种含义?
答案 0 :(得分:3)
type
属性控制模板的包装方式。具体来说,如果它是svg
或math
,则它包含在div
和该类型的子元素中。以下是在指令API存在{$ 3}}的$ compile服务中利用它的函数:
function wrapTemplate(type, template) {
type = lowercase(type || 'html');
switch (type) {
case 'svg':
case 'math':
var wrapper = document.createElement('div');
wrapper.innerHTML = '<' + type + '>' + template + '</' + type + '>';
return wrapper.childNodes[0].childNodes;
default:
return template;
}
}
现在称为templateNamespace
,并在文档中进行了描述。
答案 1 :(得分:1)
就AngularJS Directive Definition Object文档而言,没有提及任何“类型”属性。
在您提供的来源中,他们使用值“SVG”。唯一相关的属性是templateNamespace
,它对应于模板中标记使用的文档类型。
AngularJS需要此信息,因为当这些元素在<svg>
和<math>
等常用容器之外定义时,需要以特殊方式创建和克隆这些元素。
修改强>
好吧,我试着找出type
是否像templateNamespace
一样工作,但却无法使其中任何一个工作(尝试使用Angular v1.3.2和v1.2.1)。
这是 fiddle