当用户将浏览器窗口滚动到某个点以下时,我正在切换#page div的类。
到目前为止,我所做的工作正常:
http://jsfiddle.net/eTTZj/29/
<div ng-app="myApp" scroll id="page">
<header></header>
<section></section>
</div>
app = angular.module('myApp', []);
app.directive("scroll", function ($window) {
return function(scope, element, attrs) {
angular.element($window).bind("scroll", function() {
if (this.pageYOffset >= 100) {
element.addClass('min');
console.log('Scrolled below header.');
} else {
element.removeClass('min');
console.log('Header is in view.');
}
});
};
});
(当他们将窗口滚动到标题(100像素)以下时,将切换该类)
虽然,如果我错了,请纠正我,但我认为这不是使用Angular进行此操作的正确方法。
相反,我认为执行此操作的最佳方法是使用ng-class并将布尔值存储在范围中。像这样:
<div ng-app="myApp" scroll id="page" ng-class="{min: boolChangeClass}">
<header></header>
<section></section>
</div>
app = angular.module('myApp', []);
app.directive("scroll", function ($window) {
return function(scope, element, attrs) {
angular.element($window).bind("scroll", function() {
if (this.pageYOffset >= 100) {
scope.boolChangeClass = true;
console.log('Scrolled below header.');
} else {
scope.boolChangeClass = false;
console.log('Header is in view.');
}
});
};
});
尽管这不是动态的,但是如果我在滚动回调中更改scope.boolChangeClass的值,则ng-class不会更新。
所以我的问题是:当用户滚动到特定点以下时,如何最好地使用AngularJS切换#page类?
为什么你们都建议进行大范围操作?我不明白为什么这不是“角度”解决方案:
.directive('changeClassOnScroll', function ($window) {
return {
restrict: 'A',
scope: {
offset: "@",
scrollClass: "@"
},
link: function(scope, element) {
angular.element($window).bind("scroll", function() {
if (this.pageYOffset >= parseInt(scope.offset)) {
element.addClass(scope.scrollClass);
} else {
element.removeClass(scope.scrollClass);
}
});
}
};
})
因此,您可以像这样使用它:
<navbar change-class-on-scroll offset="500" scroll-class="you-have-scrolled-down"></navbar>
要么
<div change-class-on-scroll offset="500" scroll-class="you-have-scrolled-down"></div>
我使用JQuery在向下滚动时隐藏一个元素,并在向上滚动到屏幕顶部时显示它。我遇到的问题是,每当我滚动到窗口顶部时,显示的元素会立即再次隐藏。 我记录了滚动位置,当它滚动到顶部时,它看起来肯定保持在0,所以不太清楚为什么会发生这种情况。我甚至尝试使用大于0的数字,例如10,但同样的情况仍然发生。任何帮助都将不胜感激。 编辑:我根据要求添加了一些简单的html标记,其设置与我的实际代码几乎相同;
我在Windows7上安装了Apache2.2HTTP服务器。端口80已经被使用,我正在尝试将apache绑定到另一个可用端口。我已经修改了C:\Apache\ApacheHTTPserver\Apache24\conf\httpd。txt文件将Listen 80的值更改为Listen 88或Listen 7777(我已检查端口88和7777是否可用),并将ServerName localhost
问题内容: 我有一个模态框窗口(弹出窗口),其中包含一个iframe, 并且在该 iframe中 有一个可滚动的 div 。 当我滚动iframe的内部DIV,并且达到其上限或下限时, 浏览器本身的窗口就会开始滚动。这是 不想要的行为 。 我已经尝试过类似的操作, 当鼠标进入弹出框区域时,该操作会在onMouseEnter时终止主窗口滚动: e.preventDefault()由于某些原因无法正常
我正在IE上测试。单击后,我切换到子窗口,但无法返回父窗口,出现错误“窗口已关闭”。
目前,我已经开始使用Selenium2.0/Web-Driver为我工作的公司进行自动化测试。 目前我已经开发了大约20个测试,但是当我运行这些测试时,它们会为每个测试打开一个新的浏览器窗口。 我在注册测试用例中运行它,然后 在第二个测试用例中运行,我认为应该将焦点放回第一个窗口。 我还使用关闭正在创建的其他窗口,但我希望它们一开始就不打开。
问题内容: 寻找有关如何获得新的“弹出”窗口的帮助,该窗口在单击“登录”按钮后触发显示。 我能够到达显示窗口的时间,但是我不相信我当前用来获取窗口“句柄”的代码是否正常运行。我的情况有所不同,因为我在页面内使用量角器,但是出现的新窗口不是基于角度的,因此当我在该窗口中时,我必须切换为仅使用Selenium WebDriver。(任何人都不知道这种方法是否有问题?) 在下面,您可以找到我用来创建se