0

在 Angular 中,我有以下工厂:

.factory('User', function($resource){
    return $resource(
        '/users',//URL
        {},//Params defaults
        {
            'save': {method: 'POST', isArray: true }
        }//Actions
    ) ;
})

在我的控制器中,我尝试像这样保存一个新资源:

    $scope.newUser = new User() ;

    $scope.newUser.name = $scope.newUserForm.name ;
    $scope.newUser.email = $scope.newUserForm.email ;

    $scope.newUser.$save() ;

我从服务器返回一个数组,如下所示:

[ {id:12,用户名:“adfsdf”,电子邮件:“sadfsf@sdf.com”}]

但不知何故,我仍然在控制台中遇到错误:

TypeError: Object # has no method 'push'

知道我在哪里遗漏了什么吗?

谢谢

4

1 回答 1

0

在我看来,您在客户端的用户资源不是一个数组,这就是它缺少推送方法的原因。

'save': {method: 'POST', isArray: true }  //<---- You say it is an array.

$scope.newUser = new User() ; <-- create it

$scope.newUser.name = $scope.newUserForm.name ; <--- put data into it
$scope.newUser.email = $scope.newUserForm.email 

现在用户看起来像:

{
  name:"somename",
  email:"some@email.com"
}

所以它不是数组。当您的服务器响应时,angular 会尝试将答案推送到该“数组”中,但事实上,它不是一个数组。

所以我建议不要使用“isArray:true”,因为一个用户不是数组。没有用户集合。

我不知道,角度如何响应您的服务器响应,当它以数组样式呈现时,请尝试一下。

于 2013-05-20T09:08:57.503 回答