javascript - Angular.js - making function available in other controllers -
i have angular controller called submissiontreecontroller , has update_dashboard() function refreshes ui every minute.
my goal refresh ui on successful post request different controller.
how create function available in other controllers?
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 () { homecoming $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'); }; }]);
edit:
what trying do:
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);
what getting: error: [$injector:unpr] unknown provider: $scopeprovider <- $scope <-
updatedashboardservice
edit 2:
module.service('updatedashboardservice', function($rootscope, $http){ this.update_dashboard = function() { var url = django.url('submission:active_list_ajax', { site : site }); $http.get(url).success(function(data) { $rootscope.list = data.results; }); }; });
as @gopesh says create mill method, or, can in submissiontreecontroller:
$scope.$on("event:updatedashboard", function(){ update_dashboard() });
and in other controller:
$http.post(url, $scope.selected_items).success(function(data) { $scope.$emit("event:updatedashboard"); });
javascript angularjs
No comments:
Post a Comment