我希望服务接收的数据传输到控制器,但控制器不接收数据。
服务:
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))
});
}
答案 0 :(得分:2)
为什么在服务中添加了两个$rootScope
实例。删除它应解决问题
.service('dataService', function ($rootScope, $http, $filter, $rootScope, productCategoryUrl) {
应该是:
service('dataService', function ($http, $filter, $rootScope, productCategoryUrl) {
为什么你在服务中使用$ broadcast。你可以直接创建 服务中的方法,并从控制器调用它。
此外,您需要销毁$ rootScope listerner:请参阅此答案: