绑定窗口滚动AngularJS方式
Bind window scroll the AngularJS way
AngularJS新手,这里有jQuery背景。使用AngularJS,我试图开发一个固定顶部导航栏,其背景在窗口滚动时从透明过渡到不透明。但是,我在将窗口滚动绑定到$scope时遇到了问题。
以下是到目前为止我所拥有的不起作用的东西:
http://jsfiddle.net/brettwick86/pt33te3z/3/
function bgScroll($scope) {
angular.element(window).bind('scroll', function () {
$scope.scroll = window.pageYOffset;
$scope.height = document.getElementById('main-header').offsetHeight;
$scope.a = $scope.scroll / $scope.height;
$scope.bgColor = 'rgba(0,0,0,' + $scope.a + ')';
});
}
视图:
<div ng-controller="bgScroll">
<nav class="navbar navbar-inverse navbar-bw navbar-fixed-top" role="navigation" style="background-color: {{ bgColor }};">
...
</nav>
</div>
非常感谢您的帮助!
angular.element
委托给jQuery(如果包含)或JQlite,这意味着回调函数不会自动将更改应用于$scope
。
function bgScroll($scope) {
angular.element(window).bind('scroll', function () {
$scope.scroll = window.pageYOffset;
$scope.height = document.getElementById('main-header').offsetHeight;
$scope.a = $scope.scroll / $scope.height;
$scope.bgColor = 'rgba(0,0,0,' + $scope.a + ')';
// Apply the changes to the scope here
$scope.$apply();
});
}
您应该避免在控制器中进行dom操作。相反,创建一个新指令并在那里执行。
enter code here
<div bg-scroll ng-controller="bgScroll">
<nav class="navbar navbar-inverse navbar-bw navbar-fixed-top" role="navigation" style="background-color: {{ bgColor }};">
...
</nav>
</div>
myapp.directive('bgScroll', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
angular.element(window).bind('scroll', function () {
scope.scroll = window.pageYOffset;
scope.height = document.getElementById('main-header').offsetHeight;
scope.a = scope.scroll / scope.height;
scope.bgColor = 'rgba(0,0,0,' + scope.a + ')';
});
scope.$on('$destroy', function() {
angular.element(window).unbind('scroll');
});
}
};
});
相关文章:
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- angularjs路线过渡如何以交互方式设置动画
- Angularjs:如何让ui选择只有一种方式的模型竞标
- 在AngularJS中使用多个主题的最佳方式是什么
- AngularJS:使用指令的最佳方式
- 如何在angularjs中以正确的方式在指令中使用ng repeat
- 限制与AngularJS状态匹配的动态URL参数的最佳方式
- 如何使用Angularjs以PHP方式提交表单
- 使用AngularJS应用程序为移动设备(iOS、Android等)构建本地应用程序的最佳方式
- AngularJS:以编程方式将ngif添加到指令中的最佳实践是什么?
- AngularJS中使用ajax获取数据的最佳方式是什么
- 读取$localstorage的非AngularJS方式
- 使用AngularJS进行逻辑分离的最佳方式是什么
- 以这种方式将谷歌图表与AngularJS集成可靠吗
- 以编程方式更改AngularJS输入[date]
- 将JSON从PHP控制器传递到AngularJS控制器的最佳方式
- AngularJS:尝试以编程方式向视图添加指令
- Ionic 和 Angularjs - 形式绑定似乎只是一种方式
- AngularJS 以某种方式一键对两个表进行排序
- 指令没有按照我想要的方式行事 - AngularJS