Angularjs Can';无法获取元素id

Angularjs Can';无法获取元素id,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有下面的指令,我试图获取元素和属性id,但是我没有定义 代码: 'use strict'; angular.module('clientApp') .directive('myVideo', function(){ return { restrict: 'A', replace: true, template: '<div style="border:solid 10px gray; width:auto;">'+ '&l

我有下面的指令,我试图获取元素和属性id,但是我没有定义

代码:

'use strict';

angular.module('clientApp')

.directive('myVideo', function(){
  return {
    restrict: 'A',
    replace: true,
    template: '<div style="border:solid 10px gray; width:auto;">'+
              '<video style="width:100%; height:auto;" controls>'+
              '<source src="views/unit_1.mp4" type="video/mp4" id="video">'+
              '</video>'+
              '{{test}}</div>',
    link: function(scope, elem, attrs) {
      console.log('Elements', elem.id);
      console.log('Attributes', attrs.id);
    }
  };
});
“严格使用”;
angular.module('clientApp'))
.directive('myVideo',function(){
返回{
限制:“A”,
替换:正确,
模板:“”+
''+
''+
''+
“{{test}}”,
链接:功能(范围、要素、属性){
console.log('Elements',elem.id);
console.log('Attributes',attrs.id);
}
};
});

id
只是指令中存在的属性,所以您可以直接在
链接
函数第三个参数(
attrs
)中访问属性集合。尽管你可以申请@Phil建议的答案

但在您的情况下,我认为,您应该在指令元素上有
id
属性,然后只有您才能在控制台上看到它

<div my-video id="myId"></div>

id
只是指令中存在的属性,所以您可以直接在
链接
函数第三个参数(
attrs
)中访问属性集合。尽管你可以申请@Phil建议的答案

但在您的情况下,我认为,您应该在指令元素上有
id
属性,然后只有您才能在控制台上看到它

<div my-video id="myId"></div>

在指令
link
函数中,
elem
是一个jqLite对象(或jQuery,如果包含),因此您可以使用

elem.prop('id')


请参见指令
link
函数中的
elem
是一个jqLite对象(或jQuery,如果包含),因此您可以使用

elem.prop('id')


请参见属性
id
为HTML元素指定一个
唯一id
。它主要用于指向样式表中的
样式,并由
JavaScript使用特定id操作DOM元素

id
属性设置或返回元素的id(元素的id属性的值)

因此,根据要求,您必须在指令属性中定义
id
属性

<div my-video id="videoId"></div>  
console.log('Elements', elem.id);      // 'Elements', videoId
console.log('Attributes', attrs.id);   // 'Attributes', videoId

id
属性为HTML元素指定一个
唯一id
。它主要用于指向样式表中的
样式,并由
JavaScript使用特定id操作DOM元素

id
属性设置或返回元素的id(元素的id属性的值)

因此,根据要求,您必须在指令属性中定义
id
属性

<div my-video id="videoId"></div>  
console.log('Elements', elem.id);      // 'Elements', videoId
console.log('Attributes', attrs.id);   // 'Attributes', videoId

elem.attr
这件事,我还是觉得
attrs.id
似乎更容易些+1@PankajParkar这取决于你想要什么。
attrs
属性有一些,但对于普通属性属性,它与
elem.attr
差不多,但我觉得
attrs.id
似乎更容易+1@PankajParkar这取决于你想要什么。
attrs
属性有一些属性,但对于普通属性属性,它们大致相同