在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#没有方法'push'
知道我遗失了什么吗?
由于
答案 0 :(得分: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"
}
所以它不是数组。当您的服务器响应时,角度尝试将答案推送到“数组”但事实上,它不是数组。
所以我建议保留“isArray:true”,因为一个用户不是数组。没有用户集合。
我不知道,角度如何响应您的服务器响应,当呈现阵列式时,只需尝试它。