我有这段代码:
.directive('hostelGridBed', function($rootScope){
return {
restrict: 'E',
scope: {
config: '=',
range: '=',
days: '='
},
link: function(scope, element){
},
controller: ['$scope', function($scope){
$scope.innerStay = '';
function switchStay(data){
$rootScope.$broadcast('SwitchStay', {data: data.config});
};
$scope.onDropComplete = function(data,evt){
//$rootScope.$broadcast
switchStay(data);
console.log('Drop completo bed!');
}
}],
templateUrl: './js/templates/hostelgridbed.html'
}
})
.directive('hostelGridDay', function(StaysFactory){
return {
restrict: 'E',
scope: {
config: '=',
date: '='
},
link: function(scope,element){
},
controller: ['$scope','$rootScope', function($scope,$rootScope){
$scope.switchStay = function(evt, data){
console.log(data);
// Here. How can I access this controller's $scope
}
$scope.$on('SwitchStay', $scope.switchStay);
}],
templateUrl: './js/templates/hostelgridday.html'
}
})
我从$ broadcast获得数据确定,这一切都很好。除了我需要从$ scope.switchStay函数中访问指令的$ scope。 有没有办法实现这个目标?
答案 0 :(得分:0)
实际上当您从指令中$broadcast
或$emit
时,您也可以将指令的范围作为参数发送。它应该有用,但这实际上很糟糕,而且是一种非常糟糕的做法。
在这些情况下你需要做的是在指令(&
)中添加一个回调参数,并提供switchStay
函数作为回调,并简单地从指令触发它,传递参数你需要访问函数内部。
我希望这是有道理的。