Saturday, 15 February 2014

javascript - Angular.js - making function available in other controllers -



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