Angularjs 简单指令抛出错误

Angularjs 简单指令抛出错误,angularjs,Angularjs,我已经编写了一个简单的指令来设置元素的焦点。 然而,这个指令似乎给了我一些错误 app.directive('getFocus',['$timeout',function($timeout){ return { link: function(scope,element,attrs){ $timeout(function(){ element.focus(); },500); } }; }]); Plnkr可在以下位置获得:

我已经编写了一个简单的指令来设置元素的焦点。 然而,这个指令似乎给了我一些错误

app.directive('getFocus',['$timeout',function($timeout){

  return {
    link: function(scope,element,attrs){
      $timeout(function(){
        element.focus();
      },500);
    }

  };

}]);
Plnkr可在以下位置获得:


请注意,传递到link函数中的元素不是dom元素,而是它周围的包装器

您需要将该行更改为
元素[0].focus()

这应该是可行的。

如果不使用jQuery,Angular将使用jQuery的内置子集:jqLite。
jqLite公开了jQuery方法的一个子集(并且
.focus()
不可用)。 您可以在中找到更多信息

也就是说,
元素
(传递给指令的链接函数)不是原始DOM元素,而是包装为jQuery/jqLite对象的元素

因此,如果没有jQuery,就不能使用
element.focus()

但是您可以使用DOM元素的本机
.focus()
方法:
元素[0]。focus()


var-app=angular.module(“directiveApp”,[]);
app.controller(“DirectiveController”,函数($scope){
$scope.name=“Shantha Moorthy.K”;
});
应用程序指令(“myName”,函数(){
返回{
限制:“A”,
模板:“Shantha Moorthy K

” }; }); app.directive('helloWorld',function(){ 返回{ 限制:“AE”, 替换为:“true”, 模板:“你好,世界!!!” }; }); app.directive('links',function(){ 返回{ 限制:“AE”, 替换:正确, 模板:“

链接属性示例。”, 链接:功能(范围、要素、属性){ 元素绑定('单击',函数(){ 元素css(“背景色”、“白色”); 作用域$apply(函数(){ scope.color=“白色”; }); }); 元素绑定('mouseover',function(){ 元素css(“光标”、“指针”); }); } }; });


指令示例
这是一个属性指令。
这是一个显示Hello World的元素指令!!!
此指令示例在指令内使用link属性。