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