繁体   English   中英

TypeError:Object# <Object> 在Angular js Http.get请求中没有方法&#39;push&#39;

[英]TypeError: Object #<Object> has no method 'push' in Angular js Http.get request

以下是我的控制器,单击按钮时尝试拉取数据非常简单,并尝试将其推入ng-repeat。

 app.controller('HomeController',function($scope,$http) {

        $scope.user  = [];
        $scope.posts = [];
        $http.get('http://hashtag.dev/api/v1/user').success(function(data) {
            $scope.user = data;
        });
        $http.get('http://hashtag.dev/api/v1/post').success(function(data) {
            $scope.posts = data;
        });

        $scope.loadmore = function() {

            $http.get('http://hashtag.dev/api/v1/post').success(function(data) {
                $scope.posts.push(data);
            });
        };
    });

单击带有ng-click =“loadmore()”的按钮时

 TypeError: Object #<Object> has no method 'push' 

怎么了 ? 顺便说一句,我是一个完整的角落菜鸟。 服务器返回的JSON ..

 {
"total": 37,
"per_page": 10,
"current_page": 2,
"last_page": 4,
"from": 11,
"to": 20,
"data": [
    {
        "id": 84,
        "user_id": 4,
        "post_text": "Sunt eius voluptatem nostrum eos eos ipsa qui. Laudantium ratione repudiandae vitae sunt distinctio earum.",
        "created_at": "2013-12-15 14:29:00",
        "deleted_at": null,
        "user": {
            "id": 4,
            "full_name": "Vinnie Lang",
            "username": "vinnie398",
            "created_at": "2013-12-15 14:28:54"
        }
    },
    {
        "id": 82,
        "user_id": 2,
        "post_text": "Laudantium minus animi alias dolorum aperiam non. Odit quidem doloribus nihil eius incidunt sint nulla.",
        "created_at": "2013-12-15 14:29:00",
        "deleted_at": null,
        "user": {
            "id": 2,
            "full_name": "Shyanne Champlin",
            "username": "shyanne718",
            "created_at": "2013-12-15 14:28:53"
        }
    },...................

问题是$scope.posts不是一个数组(或者任何东西,你不能只是push送到一个未定义的变量并期望一个数组来)。 我会在控制器的开头或回调的开头定义一个空数组:

$scope.posts = [];

假设成功回调到$http.get('http://hashtag.dev/api/v1/post')返回的data是一个对象数组,你必须这样做:

1)在控制器中定义$scope.posts=[] ,就像定义$scope.user

2)在成功回调$http.get('http://hashtag.dev/api/v1/post')loadmore()你需要增加自己的$scope.posts用新的数据:

$scope.posts = $scope.posts.concat(data);

尝试这个:

编辑

$scope.data = { posts : [] }

$scope.loadmore = function() {

    $http.get('http://hashtag.dev/api/v1/post').success(function(data) {
        $scope.data.posts.push.apply($scope.data.posts, data);
    });
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM