Angularjs:控制器未接收到服务中发出的数据

时间:2017-09-12 19:45:07

标签: angularjs

我希望服务接收的数据传输到控制器,但控制器不接收数据。

服务:

angular.module('dataService', [])
    .constant('productCategoryUrl', ' /api/product/categories')
    .service('dataService', function ($rootScope, $http, $filter, $rootScope, productCategoryUrl) {

        var currentData = {};
        var productCategories = [];  

        return {
            setCurrentCategory: function (category, type) {
                $rootScope.$broadcast('set-category', currentData);
            },
       }
   })

控制器:

angular.module('jordans')
    .controller('productCategoryCtrl', function ($scope, $rootScope, dataService) {
         $scope.productCategories = [];             

         $rootScope.$on('set-category', function (e, args) {                   
                $scope.currentData.category = args.category;
                $scope.currentData.type = args.type;

                console.log('*******productcategory.currentdata = ' 
                  + JSON.stringify($scope.currentData))                    
            });
  }

1 个答案:

答案 0 :(得分:2)

为什么在服务中添加了两个$rootScope实例。删除它应解决问题

.service('dataService', function ($rootScope, $http, $filter, $rootScope, productCategoryUrl) {

应该是:

service('dataService', function ($http, $filter, $rootScope, productCategoryUrl) {

问题:

  

为什么你在服务中使用$ broadcast。你可以直接创建   服务中的方法,并从控制器调用它。

此外,您需要销毁$ rootScope listerner:请参阅此答案:

Working with $scope.$emit and $scope.$on