2014-12-04 3 views
0

У меня есть таблица тестов в /tests, и я хочу иметь возможность скрывать конкретный тест, перейдя на /tests/:id/hide. У меня есть функция, которая делает это, мне просто нужно выяснить способ вызова, не требуя вызова нового контроллера. При этом я также хочу перенаправить обратно на /tests.Функция вызова AngularJS при перенаправлении

angular.module('WebApp.services', []). 
    factory('riakAPIService', function($http) { 
     var riakAPI = {}; 
     riakAPI.hideTest = function(key) { 
      return $http({ 
       // Some code for setting a "hide" flag for this test in the database 
      }); 
     } 
    }); 

Есть довольно способ вызова riakAPI.hideTest(id), когда пользователь переходит к /tests/:id/hide?

angular.module('WebApp', ['WebApp.controllers','WebApp.services','ngRoute']). 
    config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) { 
     $routeProvider. 
      when("/tests", {templateUrl: "partials/tests.html", controller: "testsController"}). 
      when("/tests/:id", {templateUrl: "partials/test.html", controller: "testController"}). 
      otherwise({redirectTo: '/tests'}); 
    }]); 

ответ

1

Я думаю, что лучший подход - использовать параметр разрешения здесь.

$routeProvider.when('/tests/:id',{ 
    templateUrl : 'partials/tests.html', 
    controller : 'testController', 
    resolve : { 
     hidden : function(riakAPIService){ 
       return riakAPIService.hideTest(); 
     } 
    } 
}) 

И для службы

angular.module('WebApp.services', []). 
    factory('riakAPIService', function($http,$location) { 
     var riakAPI = {}; 
     riakAPI.hideTest = function(key) { 
      return $http({ 
       // Some code for setting a "hide" flag for this test in the database 
      }).then(function(){ 
       $location.path('/tests'); 
      }); 
     } 
    }); 
Смежные вопросы