AngularJS - 按参数的$ http服务列表对象

时间:2015-10-29 21:21:33

标签: angularjs angularjs-scope

我从select元素发送此参数(year),我正在使用$ http服务,以便根据参数列出对象数组,但由于某种原因,它会不行。

  

我有 404(未找到)错误,因为参数没有   出现在网址中以便发出请求。

选择元素:

<select data-ng-model="year" data-ng-change="listByYear(year)">
    <option value="">Select year</option>
    <option value="2014">2014</option>
    <option value="2015">2015</option>
</select>

控制器 appController 和功能 listByYear()

moduleApp.controller("appController", function($scope, $http){
    $scope.listByYear = function(year){
        console.info("Parameter received: "+year)
        var parameter = {
            year: $scope.year
        };
        var config = {
            param: parameter
        };
        $http.get("/pro/users/listByYear", config)
        .success(function (data, status, headers, config) {
            $scope.users = data;
            console.info("Ok")
        }).error(function (data, status, header, config) {
            console.error("Error")  
        });
    } 
});

2 个答案:

答案 0 :(得分:1)

根据你的评论,这样做(一个简单的字符串连接):

$http.get('/pro/users/listbyyear/' + year);

将产生:

'/pro/users/listbyyear/2014'

答案 1 :(得分:0)

我在文档中阅读params并附上了&#39;

所以这样它应该会更好:

var config = {
    params: parameter
};

EDIT2:

你应该使用标准&#39;然后&#39;方法而不是成功&#39;和&#39;错误&#39;方法因为这些方法的贬值:

$http.get("/pro/users/listByYear", config)
    .then(function (response) {
        console.log('data:', response.data);
        console.log('status:', response.status);
        console.log('headers:', response.headers);
    }).catch(function (response) {
        console.log('data:', response.data);
        console.log('status:', response.status);
        console.log('headers:', response.headers);
    });

请参阅https://docs.angularjs.org/api/ng/service/$http#deprecation-notice