什么"类型"指令的属性吗?

时间:2014-11-17 00:26:05

标签: angularjs angularjs-directive

指令的“type”属性有什么作用?我似乎无法找到它记录。

以下是其用法示例: https://github.com/crudbetter/angular-charts/blob/master/src/piechart.js#L81

这种用法只是创建一个未使用的属性,还是实际上有某种含义?

2 个答案:

答案 0 :(得分:3)

type属性控制模板的包装方式。具体来说,如果它是svgmath,则它包含在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