如何传递参数angularjs工厂$http和$stateParameters

如何传递参数angularjs工厂$http和$stateParameters,angularjs,Angularjs,控制器: App.factory('menuService', function ($http) { var urlBase = 'Services/MenuService.asmx/GetAllMenu'; var factory = {}; factory.getAllMenus= function () { return $http.get(urlBase); }; return factory; }); ///工作完美 其他控制

控制器:

App.factory('menuService', function ($http) {
    var urlBase = 'Services/MenuService.asmx/GetAllMenu';
    var factory = {};
    factory.getAllMenus= function () {
        return $http.get(urlBase);
    };
    return factory;

});
///工作完美

其他控制器如何使用相同的服务

我试过这个,但错了

App.controller("sampleController",  function ($scope, menuService) {

    $scope.List = [];

    var menuData=function(data, status){
        $scope.List = data;

        console.log($scope.List);
    }

   menuService.getAllMenus().success(menuData);
});
在这里,我分享这张照片的样子


请帮帮我

如果要使用所有函数/方法,需要定义它们。未定义getMenu函数/方法,因此它将生成错误。请看下面的代码。您可以添加许多函数。您的工厂由所有控制器共享,因此您可以在任何控制器中使用它

App.controller("viewDetailMenu", function ($scope, menuService, $stateParams) {

    $scope.menu = menuService.getMenu($stateParams.id);

});
然后呢,

App.factory('menuService', function ($http) {
    var urlBase = 'Services/MenuService.asmx/GetAllMenu';
    var factory = {};
    factory.getAllMenus= function () {
        return $http.get(urlBase);
    },
    factory.getMenu=function(id){
        return $http.get(urlBase +"/ID="+ id) // write it according to your API.
    }
    return factory;

});

如果要使用所有函数/方法,则需要定义它们。未定义getMenu函数/方法,因此它将生成错误。请看下面的代码。您可以添加许多函数。您的工厂由所有控制器共享,因此您可以在任何控制器中使用它

App.controller("viewDetailMenu", function ($scope, menuService, $stateParams) {

    $scope.menu = menuService.getMenu($stateParams.id);

});
然后呢,

App.factory('menuService', function ($http) {
    var urlBase = 'Services/MenuService.asmx/GetAllMenu';
    var factory = {};
    factory.getAllMenus= function () {
        return $http.get(urlBase);
    },
    factory.getMenu=function(id){
        return $http.get(urlBase +"/ID="+ id) // write it according to your API.
    }
    return factory;

});

您的factory函数称为
factory.getAllMenus
,但是在第二个ctrl键中您调用的是
menuService.getMenu
?它不存在。$scope.menu=menuService.getMenu($stateParams.id);在$scope.menu=menuService.getMenus($stateParams.id)中更改;但是Jax不起作用。我也更改了$scope.menu=menuService.getMenu[$stateParams.id];但这也不起作用。您的工厂函数名为
factory.getAllMenus
,但在第二个ctrl键中,您调用的是
menuService.getMenu
?它不存在。$scope.menu=menuService.getMenu($stateParams.id);在$scope.menu=menuService.getMenus($stateParams.id)中更改;但是Jax不起作用。我也更改了$scope.menu=menuService.getMenu[$stateParams.id];但这也不起作用。如果有帮助,请将其标记为答案,以便其他人可以通过它获得帮助。您好,请在您的建议中根据更改参数再次调用来自webservice或webmethod的工厂调用数据。我的意思是,首先我们从服务中调用数据并加载它。我想使用第二个控制器,通过第一次加载的数据列表,选择显示在其他页面中的项目。如果有帮助,请将其标记为答案,以便其他人可以通过它获得帮助。您好,请根据更改参数建议中的Micronyks再次从webservice或webmethod调用数据。我的意思是,首先我们从服务中调用数据并加载它。我想使用第二个控制器和由第一个加载的数据列表中选择的项目显示在其他页面。