从$ scope. $ on中访问$ scope

时间:2017-06-26 20:44:21

标签: angularjs angular-directive angular-broadcast

我有这段代码:

.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。 有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

实际上当您从指令中$broadcast$emit时,您也可以将指令的范围作为参数发送。它应该有用,但这实际上很糟糕,而且是一种非常糟糕的做法。

在这些情况下你需要做的是在指令(&)中添加一个回调参数,并提供switchStay函数作为回调,并简单地从指令触发它,传递参数你需要访问函数内部。

我希望这是有道理的。