AngularJS $ resource - обновить массив внутри объекта

0

Я пытаюсь выяснить, как обновить массив в объекте javascript, используя API. В качестве примера я могу получить полную конечную точку /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"]}

Я хочу сосредоточиться на массиве "group" внутри объекта. Я ищу способ обновить массив, добавив и удалив элементы, используя 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. Я не уверен, куда идти отсюда. Если у вас есть понимание, это будет очень полезно.

Спасибо,

Теги:
arrays

1 ответ

0
Лучший ответ

Я немного смутился из-за того, почему вы вызываете $scope.groups.data. Являются ли data частью вашего ответа API на 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
  });
});

Пожалуйста, дайте мне знать, если я пропустил что-то по этому вопросу, поэтому я могу обновить свой ответ соответственно

  • 0
    этот код работал отлично. Большое спасибо. Что касается вашего вопроса, дополнительный код в контроллере был просто дополнительными вещами, которые я ранее пробовал. Я просто оставил их как ссылку на то, что было предпринято ранее. У меня есть одно продолжение. Приведенный вами код показывает мне, как я могу отправить содержимое в массив в соответствии с запросом. Я также ищу способ удалить определенные элементы из массива. Итак, скажем, вы добавили group_id в массив, как может выглядеть код для удаления group_id? Заранее спасибо?
  • 0
    Сначала вам нужно найти его индекс: var i = $scope.post.group.indexOf(group_id); А затем удалите его: if (i !== -1) { $scope.post.group.splice(i, 1); }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню