Javascript Angular.js-使功能在其他控制器中可用

Javascript Angular.js-使功能在其他控制器中可用,javascript,angularjs,Javascript,Angularjs,我有一个名为SubmissionTreeController的角度控制器,它有update_dashboard()函数,每分钟刷新一次ui 我的目标是在来自不同控制器的post请求成功时刷新ui 如何使此功能在其他控制器中可用 var module = angular.module("submissionDashboard", ['ui.tree', 'ngCookies', 'ui.bootstrap',]); module.controller("SubmissionTreeControl

我有一个名为SubmissionTreeController的角度控制器,它有update_dashboard()函数,每分钟刷新一次ui

我的目标是在来自不同控制器的post请求成功时刷新ui

如何使此功能在其他控制器中可用

var module = angular.module("submissionDashboard", ['ui.tree', 'ngCookies', 'ui.bootstrap',]);

module.controller("SubmissionTreeController", ["$scope", "$http", "$modal", 
function($scope, $http, $modal) {
    $scope.selected_items = {};

    var update_dashboard = function() {
        var url = Django.url('submission:active_list_ajax', {
            site : site
        });

        $http.get(url).success(function(data) {
            $scope.list = data.results;
        });
    };

    update_dashboard();
    $scope.closeTask = function(scope) {
        var modalInstance = $modal.open({
            templateUrl: 'modal_close_submission_renderer.html',
            controller: 'ModalCloseSubmissionController',
            resolve: {
                items: function () {
                    return $scope.selected_items;
                }} 
        });
    };
}]);

module.controller('ModalCloseSubmissionController', ['$scope', '$modalInstance', '$http', 'items',  function ($scope, $modalInstance, $http, items) {
    $scope.items = items;

    $scope.selected = {
        item: 1,
        text: ''
    };

    $scope.ok = function () {
        var val = $scope.selected.item;
        if (val === 1) {
            var url = Django.url('submission:close-notify', {
                site : site
            });
            $http.post(url, $scope.selected_items).success(function(data) {
                update_dashboard();
            });
        } else if (val === 2) {
            var url = Django.url('submission:close', {
                site : site
            });

            $http.post(url, $scope.selected_items).success(function(data) {
                update_dashboard();
            });
        } else if (val === 3) {
            var url = Django.url('submission:cancel', {
                site : site
            });

            $http.post(url, $scope.selected_items).success(function(data) {
                update_dashboard();
            });
        };

        $modalInstance.close($scope.selected.item);
    };

    $scope.cancel = function () {
        $modalInstance.dismiss('cancel');
    };
}]);
编辑:

我想做的是:

module.service('updateDashboardService', function($scope, $http){
    this.update_dashboard = function() {
        $scope = $scope; 
        var url = Django.url('submission:active_list_ajax', {
            site : site
        });

        $http.get(url).success(function(data) {
            $scope.list = data.results;
        });
    };
});

module.controller("SubmissionTreeController", ["$scope", "$http", "$modal", "updateDashboardService", function($scope, $http, $modal, updateDashboardService) {
    $scope.selected_items = {};

    updateDashboardService.update_dashboard();

    var timer = setInterval(function() {
        $scope.$apply(updateDashboardService.update_dashboard($scope, $http));
    }, 1000 * 60);
我得到的是:
错误:[$injector:unpr]未知提供程序:$scopeProvider正如@Gopesh所说的创建工厂方法,或者,您可以在SubmissionTreeController中执行类似操作:

    $scope.$on("event:updateDashboard", function(){ update_dashboard() });
    $http.post(url, $scope.selected_items).success(function(data) {
        $scope.$emit("event:updateDashboard");
    });
在另一个控制器中:

    $scope.$on("event:updateDashboard", function(){ update_dashboard() });
    $http.post(url, $scope.selected_items).success(function(data) {
        $scope.$emit("event:updateDashboard");
    });

创建一个工厂方法,这样它就可以跨控制器使用。你能检查一下我提供的代码吗?我在第一篇文章中添加了一个有效的例子。我将研究scope.emit,因为它可能是在应用程序的不同部分使用函数的更干净的方式。