我试图弄清楚如何使用API更新javascript对象中的数组。例如,我可以提取 / api / posts /:id 的完整端点并获得以下结果:
{"_id":"56521356177af21100960105",
"user":"564bbd2da851f0aaeb7746c5",
"description":"'Taking You Higher' Pt. 3 Support here... http://bit.ly/YJBeIg So a year after 'Taking You Higher' Rameses B and I decided to put out another summery progres...",
"title":"'Taking You Higher Pt. 2' (Progressive House Mix) - YouTube","comment":"This is a great mix.","url":"https://www.youtube.com/watch?v=heJBwBUStXU","__v":0,
"created":"2015-11-22T19:11:18.760Z",
"group":["564fddfbf5d334fc0f6b4093"]}
我想专注于"组"对象中的数组。我正在寻找一种通过使用AngularJs添加和删除项目来更新数组的方法。据我所知,我很可能需要使用 $ resource 而不是 $ http。但是,我不知道应该怎么写这个。
以下是我目前在控制器中的内容:
myApp.factory('groupsInPost', function($resource) {
return $resource('/api/posts/:id', { id: '@_id' }, {
update: {
method: 'PUT' // this method issues a PUT request
}
});
});
myApp.controller('AppCtrl', ['$scope', '$http', '$timeout', '$q', '$log', '$filter', 'groupsInPost',
function($scope, $http, $timeout, $q, $log, $filter, groupsInPost ) {
...
$scope.updateGroup = function(post_id) {
var favorite = $scope.favorite;
$scope.groups = groupsInPost.get({ id: post_id }, function() {
// $scope.groups is fetched from server and is an instance of groupsInPost
console.log($scope.groups.data)
//$scope.groups.$update(function() {
//updated in the backend
});
// $http.put('/api/posts/' + post_id, groups.push(group_id)).success(function(response) {
// refreshPost();
// });
};
...
});
我当前的问题,正如您可能会立即预料到的那样,我的API并没有像$ resource期望的那样发回数组。我不知道从哪里开始。如果您有任何见解,那将非常有帮助。
谢谢,
答案 0 :(得分:0)
我对你拨打$scope.groups.data
的原因感到有些困惑。 data
请求的GET
部分是否属于$resource
请求?
此外,根据发布的代码,您可以在更新调用期间检索组的列表。由于与posts
相关的group_id
不应该在此之前完成吗?当你加载帖子似乎更合理。
在注释行上,您可以将var group_id = 1;
$scope.post = groupsInPost.get({ id: post_id }, function() {
$scope.post.group.push(group_id);
$scope.post.$update(function() {
// updated in the backend
});
});
推送到群组列表。它来自哪里?
假设你想保持这种流程,你现在有我的建议是这样的:
ImageButton
如果我错过了这个问题,请告诉我,以便我可以相应地更新我的答案