Angularjs:控制器未接收服务中发出的数据
我希望服务接收到的数据被传输到控制器,但控制器没有接收到数据 服务:Angularjs:控制器未接收服务中发出的数据,angularjs,Angularjs,我希望服务接收到的数据被传输到控制器,但控制器没有接收到数据 服务: angular.module('dataService', []) .constant('productCategoryUrl', ' /api/product/categories') .service('dataService', function ($rootScope, $http, $filter, $rootScope, productCategoryUrl) { var curr
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))
});
}
为什么在服务中添加了两个
$rootScope
实例。删除此选项可以解决此问题
.service('dataService', function ($rootScope, $http, $filter, $rootScope, productCategoryUrl) {
应该是:
service('dataService', function ($http, $filter, $rootScope, productCategoryUrl) {
问题:
为什么在服务中使用$broadcast。您可以直接创建
方法,并从控制器调用它
您还需要销毁$rootScope listerner:请参见以下答案:
您正在调用
dataService.setCurrentCategory()
?i、 事件是否被提起!?嗯,我过早地接受了维德的回答。这不是解决办法。对于您的问题,调用了seccurrentcontegory()。您的实现需要改进。另外,你还需要破坏rootscope侦听器。事实上,维德,我接受你的答案有点过早。这不是问题所在。@koque那么你解决了问题了吗?是的,Ved,问题是,在数据服务进行广播时,productCategoryCtrl没有加载,因此它没有接收广播。