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
。
我似乎无法从指令中的函数内部访问 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
。