【问题标题】:How to get id from $http.get in angular.js如何在 angularjs 中从 $http.get 获取 id
【发布时间】:2016-08-11 11:30:13
【问题描述】:

您好,我是新手,正在学习 angular.js。我想从这个实际上是一个 API (http://ba.dev/businesses/businesspage/36) 的 url 获取数据,但我不知道如何在我的 controller.js 文件中编写这个东西。给定的是我的代码,请解释我如何从 id=36 的企业获取数据。

var reControllers = angular.module('reControllers',[]);
reControllers.controller('RecentController', ['$scope','$http' ,function($scope,$http){
    $http.get('http://ba.dev/businesses/businesses').success(function(data){
        $scope.business = data;
     }); 
}]);

reControllers.controller('PageController', ['$scope','$http', '$routeParams' ,function($scope,$http,$routeParams){
    $http.get('http://ba.dev/businesses/businesspage').success(function(data){
        $scope.student = data;
        $scope.whichItem = $routeParams.itemId; 
    }); 
}]);

这是我的 app.js 文件

var myApp = angular.module('myApp',[
    'ngRoute',                                
    'reControllers'                   
]);

myApp.config(['$routeProvider', function($routeProvider){   
    $routeProvider.                      
        when('/main',{               
        templateUrl : 'partials/main.html',
        controller : 'RecentController'
    }).
    when('/page/:itemId',{
        templateUrl : 'partials/page.html',
        controller  : 'PageController'
    }).
    otherwise({                   
        redirectTo: '/main'   
    });
}]);     

【问题讨论】:

    标签: javascript angularjs http get partial


    【解决方案1】:

    您可以使用$routeParams从 URL 获取 id

    $http.get('http://ba.dev/businesses/businesspage/'+ $routeParams.itemId)
    

    随后添加服务器端逻辑,从 URL 中获取 itemId,执行必要的操作以从 DB 中获取数据并返回。

    【讨论】:

      【解决方案2】:

      您应该使用then 而不是success,因为它已被弃用。所以,你的代码应该是:`

      $http.get('http://ba.dev/businesses/businesses').then(function(data){
       $scope.business = data;
       }); }]);.....
      

      来自 AngularJS 文档:

          // Simple GET request example:
      $http({
        method: 'GET',
        url: '/someUrl'
      }).then(function successCallback(response) {
          // this callback will be called asynchronously
          // when the response is available
        }, function errorCallback(response) {
          // called asynchronously if an error occurs
          // or server returns response with an error status.
        });
      

      更多关于路由参数的信息:AngularJS $routeParams

      【讨论】:

      • 即使人们不应该使用successerror(当然,您的提示是正确的)它也不能回答问题。事实上,它应该是一个假设答案的补充。
      猜你喜欢
      • 2018-02-25
      • 2017-10-19
      • 2016-04-16
      • 2014-03-31
      • 2016-05-25
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      相关资源
      最近更新 更多