Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS';滚动顶部';相等的_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript AngularJS';滚动顶部';相等的

Javascript AngularJS';滚动顶部';相等的,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我希望在AngularJS指令中实现类似的功能: 这相当简单,当您不在页面顶部时,它会在一个按钮中淡出以滚动到顶部: $(窗口)。滚动(函数(){ 如果($(this).scrollTop()>100){ $this.fadeIn(); }否则{ $this.fadeOut(); } }); 但是,我很难找到如何以角度获取当前滚动位置。我不想只为这一件事而使用jQuery。我不相信在角度上有任何东西可以获得滚动位置。只需使用纯香草JS 您可以在任何元素上检索scrollTop属性 为你拉小

我希望在AngularJS指令中实现类似的功能:

这相当简单,当您不在页面顶部时,它会在一个按钮中淡出以滚动到顶部:

$(窗口)。滚动(函数(){
如果($(this).scrollTop()>100){
$this.fadeIn();
}否则{
$this.fadeOut();
}
});

但是,我很难找到如何以角度获取当前滚动位置。我不想只为这一件事而使用jQuery。

我不相信在角度上有任何东西可以获得滚动位置。只需使用纯香草JS

您可以在任何元素上检索scrollTop属性

为你拉小提琴:


这是服务$window的属性

将$window注入控制器,您可以在scroll上获得滚动位置

var windowEl = angular.element($window);
var handler = function() {
    console.log(windowEl.scrollTop())
}
windowEl.on('scroll', handler);

从另一个进行自适应

您可以使用

angular.element(document).bind('scroll', function() {
    if (window.scrollTop() > 100) {
        $this.fadeIn();
    } else {
        $this.fadeOut();
    }
});

您可以使用like作为polyfill 这里有一个


这导致了chrome和firefox的不同行为。这个问题有什么解决方案吗?我猜这是在访问jqLite(或jQuery)方法?是的,使用Angular的jqLite!你真的应该添加一些解释,解释为什么这个代码应该工作——你也可以在代码本身中添加注释——在当前的形式下,它没有提供任何解释,可以帮助社区的其他人理解你为解决/回答问题做了什么。
var windowEl = angular.element($window);
var handler = function() {
    console.log(windowEl.scrollTop())
}
windowEl.on('scroll', handler);
angular.element(document).bind('scroll', function() {
    if (window.scrollTop() > 100) {
        $this.fadeIn();
    } else {
        $this.fadeOut();
    }
});
function offset(elm) {
  try {return elm.offset();} catch(e) {}
  var rawDom = elm[0];
  var _x = 0;
  var _y = 0;
  var body = document.documentElement || document.body;
  var scrollX = window.pageXOffset || body.scrollLeft;
  var scrollY = window.pageYOffset || body.scrollTop;
  _x = rawDom.getBoundingClientRect().left + scrollX;
  _y = rawDom.getBoundingClientRect().top + scrollY;
  return { left: _x, top: _y };
}