我在/tests
中有一个测试表,我希望能够通过转到/tests/:id/hide
永久隐藏特定测试。我有一个执行此操作的函数,我只需要找出一种方法来调用它而无需调用新的控制器。执行此操作时,我还想重定向回/tests
。
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'});
}]);
答案 0 :(得分:1)
我认为最好的方法是在这里使用resolve param。
$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');
});
}
});