Javascript 在另一个控制器中运行一个角度控制器的功能

Javascript 在另一个控制器中运行一个角度控制器的功能,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我有两个列表页面:类别和该类别的产品。模块代码: var shop = angular.module('shop', []); shop.controller('Products', ['$scope', '$http', '$rootScope', function($scope, $http, $rootScope) { $scope.products = []; $scope.update = function () { $http.p

我有两个列表页面:类别和该类别的产品。模块代码:

var shop = angular.module('shop', []);

shop.controller('Products', ['$scope', '$http', '$rootScope', function($scope, $http, $rootScope) {

    $scope.products = []; 

    $scope.update = function () {       
        $http.post('/shop/products', {
            category_id: $rootScope.category_id
        })
            .success(function(response, status){
               $scope.products = response.data;
            })
            .error(function(data, status){  });
        };
    }]);

shop.controller('Categories', ['$scope', '$http', '$rootScope', function($scope, $http, $rootScope) {
    $scope.categories = [
        { name: 'games', id: 1 }, { name: 'films', id: 2 } 
    ]
    $rootScope.category_id = '-1';
    $scope.select = function (id) {
        $rootScope.category_id = id;

        // Need to run an update of Product controller

    }
}]);
当用户通过单击选择类别时,我需要使用从服务器收到的新产品(按所选类别过滤)更新产品列表。问题是如何在Categories controller中运行Products controller的更新功能?


我知道事件广播的简易方法,但这不是最好的解决方案。

欢迎访问该网站。请问一个问题。这并不是一个问题。你需要工厂方面的帮助吗?您是否希望人们查看您的代码?您的描述也非常本地化。我们不知道你在做什么项目。但是我们是程序员,所以我们知道数据类型、结构、算法等。使用这个短语,人们可以快速看到您遇到的问题类型,而不是专注于具体任务的细节。希望能有帮助。嗨,富兰克林。我更新了这个问题,使之非常简单明了。您应该使用一个服务在多个控制器之间共享信息,或者如您所说设置一组发射/广播事件。或者更具体地说,是的,通过服务,我可以访问任何控制器中的数据,但我不能从一个控制器更新另一个控制器的范围(仅通过事件)