如何在Angular指令中获取body
元素?我的目标是在指令内部执行类似于jQuery $('body').innerWidth();
的操作。我不想使用jQuery,而是使用Angular内置的jqlite实现。
如何在Angular指令中获取body
元素?我的目标是在指令内部执行类似于jQuery $('body').innerWidth();
的操作。我不想使用jQuery,而是使用Angular内置的jqlite实现。
如果您需要从应用于另一个元素的指令中访问body元素,可以使用$document服务,如下所示。
app.directive("myDirective", function($document) {
return function(scope, element, attr) {
var bodyWidth = $document[0].body.clientWidth;
console.log("width of body is "+ bodyWidth);
};
});
<button my-directive>Sample Button</button>
你也可以使用jqLite提供的DOM遍历方法(虽然它们比jQuery提供的要弱得多)。例如,您可以使用angular.element.parent()
方法进行递归查找来查找body标签。
使用包含在Angular的jQLite中的find()
实现的另一种变体:
app.directive("myDirective", function() {
return function(scope, element, attr) {
var body = angular.element(document).find('body');
console.log(body[0].offsetWidth);
};
});
$SnifferProvider
下的Angular代码,您会看到对document.body
的引用,其中document
只是document = $document[0] || {}
。 - Izhaki