angular 指令 - 函数内未定义范围

angular directive - scope undefined inside function

我似乎无法从指令中的函数内部访问 link 函数范围变量。 "elem" 变量已定义,但范围未定义。这是为什么??

这是我的指令:

function contextMenu($document){
  return {
    scope: {
      target: '=',
    },
    restrict: 'A',
    link: function(scope, elem, attr) {
      elem.bind('contextmenu',handleRightClick);
      function handleRightClick(event) {
        // do something with scope (scope is undefined)
      }
    }
  }
};

如何使用范围变量?

谢谢!

URI

编辑 1

我发现我可以使用它来将作用域传递给函数: Passing parameters to click() & bind() event in jquery?,但这仍然不能解释为什么范围变量未定义。

编辑2:

为了完整起见,我的指令是这样设置的:

app.js

angular
  .module('myModule', [])
  .directive('contextMenu', ['$document', components.contextMenu])

并在 html 中:

<div context-menu target="testObject">

确保您正确使用指令。由于您没有在模板中使用该指令,我希望您使用它是这样的:

    <div context-menu target="something"></div>

那么我对你的指令设置感到困惑。试试这个:

    MyDirectiveModule.directive('contextMenu', function(){
        return {
            restrict: 'A',
            scope: {
                target: '@'
            },
            link: function(scope, element){
                console.log(scope);
                // don't use $scope!
            }
        };
    });

确保在 link: 部分使用 scope 而不是 $scope