我试图在用户滚动时执行操作,但是我无法访问控制器的范围。
我的代码是:
(function() {
angular.module("myApp")
.controller("MyController", ['$window', function($window){
this.sidebarFixed = false;
angular.element($window).bind("scroll", function() {
console.log(this.sidebarFixed);
});
}]);
})();
此输出为undefined
。如何在函数内访问this
?
答案 0 :(得分:2)
事件处理程序中this
的上下文不是控制器...它是window
,因为那是$window
引用
尝试在变量中存储控制器this
的引用,并在事件处理程序中使用它。
您的问题是在javascript中使用this
的常见问题,因此存储引用始终是一种很好的做法
(function() {
angular.module("myApp")
.controller("MyController", ['$window', function($window){
var vm = this; // store reference then always use variable
vm.sidebarFixed = false;
angular.element($window).bind("scroll", function() {
// `this` is `window` here
console.log(vm.sidebarFixed);
});
}]);
})();