Angularjs - 在body指令中获取body元素

时间:2013-05-23 22:46:43

标签: javascript angularjs

如何在angular指令中获取body元素?我的目标是用jquery $('body').innerWidth(); inside指令做什么。我不想使用jquery而是使用angular内置的jqlite实现。

2 个答案:

答案 0 :(得分:33)

如果您需要从另一个元素上应用的指令中访问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>

您还可以使用jqLit​​e中提供的DOM遍历方法(尽管它们比jQuery提供的功能强大得多)。例如,您可以使用angular.element.parent()方法进行递归查找以查找正文标记。

答案 1 :(得分:10)

另一个使用find()实现的变体,它包含在angular的jQLite中:

app.directive("myDirective", function() {
    return function(scope, element, attr) {

    var body = angular.element(document).find('body');
    console.log(body[0].offsetWidth);

    };
});