JavaScript-AngularJS作用域问题:函数中未定义全局作用域中的对象

JavaScript-AngularJS作用域问题:函数中未定义全局作用域中的对象,javascript,angularjs,Javascript,Angularjs,我的AngularJS指令中有一个事件处理程序: angular.element($window).on("wheel", onScrollAction); 在指令中的onscrolAction之前,我在onscrolAction函数本身之外定义了一些变量,因为我不希望在每个车轮事件上都指定这些变量,因为它们不应该更改 app.directive('scroll', function ($window) { return function(scope, element, attrs)

我的AngularJS指令中有一个事件处理程序:

angular.element($window).on("wheel", onScrollAction);
在指令中的
onscrolAction
之前,我在
onscrolAction
函数本身之外定义了一些变量,因为我不希望在每个车轮事件上都指定这些变量,因为它们不应该更改

app.directive('scroll', function ($window) {
    return function(scope, element, attrs) {
    var elem = angular.element(document.querySelectorAll('.titletitle')).eq(1);
    var elemHeight = elem[0].scrollHeight;
    //so on until the 5th element
    //then object to store all the elements and their heights:
    var theObject = [{el:elem,elH:elemHeight},{el:elem2,elH:elem2Height},{el:elem3,elH:elem3Height},{el:elem4,elH:elem4Height},{el:elem5,elH:elem5Height}]
    var theActiveElem = theObject[0];
    var onScrollAction = function (event) {
    console.log(theActiveElem) //renders undefined
    console.log(elem) // renders the element
我的问题是,
elem
如何从全局作用域过渡到函数作用域,而
activeelem
不是,以及如何修复它,以便在事件处理程序中对
activeelem
执行操作


谢谢。

这对我来说真的很奇怪,想解释一下

事件处理程序中的控制台日志如下所示:

        console.log(theActiveElem,theObject); //theActiveElement undefined
        thepatch = Math.floor(theoffset/theActiveElem.elH)
        if(thepatch==1){
            var theActiveElem = theObject[thepatch];
            console.log(theActiveElem);
        }
但是一旦我改变了
var theActiveElem=theObject[thepatch]
活动元素=对象[匹配]已修复

我知道我不应该在那一行用
var
声明它,但是为什么这会导致在几行日志中出现错误呢


无论如何,这件事现在已经解决了。

这对我来说真的很奇怪,我想解释一下

事件处理程序中的控制台日志如下所示:

        console.log(theActiveElem,theObject); //theActiveElement undefined
        thepatch = Math.floor(theoffset/theActiveElem.elH)
        if(thepatch==1){
            var theActiveElem = theObject[thepatch];
            console.log(theActiveElem);
        }
但是一旦我改变了
var theActiveElem=theObject[thepatch]
活动元素=对象[匹配]已修复

我知道我不应该在那一行用
var
声明它,但是为什么这会导致在几行日志中出现错误呢

无论如何,现在已解决此问题。

的可能重复