AngularJS $ resource - 更新对象内的数组

时间:2015-11-23 03:21:24

标签: javascript arrays angularjs mongodb api

我试图弄清楚如何使用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期望的那样发回数组。我不知道从哪里开始。如果您有任何见解,那将非常有帮助。

谢谢,

1 个答案:

答案 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

如果我错过了这个问题,请告诉我,以便我可以相应地更新我的答案