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

时间:2015-02-04 08:46:54

标签: angularjs angularjs-directive scope

我似乎无法从我的指令中的函数内部到达链接函数范围变量。定义了“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)
      }
    }
  }
};

如何使用范围变量?

谢谢!

乌里

EDIT1

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

EDIT2:

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

app.js

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

并在html中:

<div context-menu target="testObject">

1 个答案:

答案 0 :(得分:0)

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

    <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!
            }
        };
    });

请务必在scope部分使用$scope代替link: