这是我的服务:
MetronicApp.factory('ItemService', ['$http', '$sessionStorage', '$stateParams', function($http, $sessionStorage, $stateParams) {
return {
save: function(data, success, error) {
return $http.post(baseUrl + '/shops/' + $sessionStorage.currentShop.id + '/menus/' + $stateParams.menuId + '/categories/' + $stateParams.categoryId + '/items', data).success(success).error(error);
},
update: function(data, success, error) {
return $http.put(baseUrl + '/items/' + data.id, data).success(success).error(error);
},
saveTranslation: function(data, success, error) {
return $http.post(baseUrl + '/itemTranslation', data).success(success).error(error);
},
get: function(itemId, success, error) {
return $http.get(baseUrl + '/items/' + itemId).success(success).error(error);
},
getAll: function(categoryId, success, error) {
console.log("Menu id is: " + $stateParams.menuId);
return $http.get(baseUrl + '/shops/' + $sessionStorage.currentShop.id + '/menus/' + $stateParams.menuId + '/categories/' + $stateParams.categoryId + '/items').success(success).error(error);
}
};
}]);
我希望能够在getAll方法中使用$ stateParams.menuId。那时,网址是:
/menus/54/categories/56/items
但$ stateParams为null。我怎么能得到它们?
答案 0 :(得分:0)
解决此问题的一种方法是在执行服务功能时从控制器传入stateParams。只需将其作为需要此数据的函数的参数,然后在执行这些函数时提供它。
MetronicApp.factory('ItemService', ['$http', '$sessionStorage', function($http, $sessionStorage) {
return {
save: function(data, stateParams, success, error) {
return $http.post(baseUrl + '/shops/' + $sessionStorage.currentShop.id + '/menus/' + stateParams.menuId + '/categories/' + stateParams.categoryId + '/items', data).success(success).error(error);
},
update: function(data, stateParams, success, error) {
return $http.put(baseUrl + '/items/' + data.id, data).success(success).error(error);
},
saveTranslation: function(data, stateParams, success, error) {
return $http.post(baseUrl + '/itemTranslation', data).success(success).error(error);
},
get: function(itemId, stateParams, success, error) {
return $http.get(baseUrl + '/items/' + itemId).success(success).error(error);
},
getAll: function(categoryId, stateParams, success, error) {
console.log("Menu id is: " + stateParams.menuId);
return $http.get(baseUrl + '/shops/' + $sessionStorage.currentShop.id + '/menus/' + stateParams.menuId + '/categories/' + stateParams.categoryId + '/items').success(success).error(error);
}
};
}]);