angularJS 自定义指令中 elem 和 elem[0] 的区别?
Difference between elem and elem[0] in angularJS custom directives?
angular.module('todomvc')
.directive('todoFocus', function ($timeout) {
'use strict';
return function (scope, elem, attrs) {
scope.$watch(attrs.todoFocus, function () {
$timeout(function () {
elem[0].focus();
}, 0, false);
});
};
});
我最近在分析 JS 示例代码 (angularJS) 的自定义指令时遇到了这行,这让我很沮丧。
elem[0].focus();
当我试图改变 elem[0].focus();到 elem.focus();整个指令是行不通的。但在我之前尝试创建一个包含 elem.bind('keydown', someFunction(){}); 的自定义指令时单独没有 [0] 的 elem 工作正常。
所以我的问题是:elem 和 elem[0] 在创建这些自定义指令时有什么区别?
感谢任何帮助,谢谢!
根据angularJsdocumentation,它returnsjQuery对象。如果您对 elem[0].focus()
感到恼火,您可以使用 $(elem).focus()
基本上这些都是明显的区别;
- elem 是 angular
中的 jQlite 实例
- elem[0] 是原生 javascript 对象,没有 jQlite
实例,因此您不能使用任何 jquery DOM 方法,而只能使用本机方法
javascript.
中的方法
angular.module('todomvc')
.directive('todoFocus', function ($timeout) {
'use strict';
return function (scope, elem, attrs) {
scope.$watch(attrs.todoFocus, function () {
$timeout(function () {
elem[0].focus();
}, 0, false);
});
};
});
我最近在分析 JS 示例代码 (angularJS) 的自定义指令时遇到了这行,这让我很沮丧。
elem[0].focus();
当我试图改变 elem[0].focus();到 elem.focus();整个指令是行不通的。但在我之前尝试创建一个包含 elem.bind('keydown', someFunction(){}); 的自定义指令时单独没有 [0] 的 elem 工作正常。
所以我的问题是:elem 和 elem[0] 在创建这些自定义指令时有什么区别?
感谢任何帮助,谢谢!
根据angularJsdocumentation,它returnsjQuery对象。如果您对 elem[0].focus()
感到恼火,您可以使用 $(elem).focus()
基本上这些都是明显的区别;
- elem 是 angular 中的 jQlite 实例
- elem[0] 是原生 javascript 对象,没有 jQlite 实例,因此您不能使用任何 jquery DOM 方法,而只能使用本机方法 javascript. 中的方法