Удалить идентификатор с помощью Angular

0

Пользователи могут искать название фильма в моем поле ввода, и он покажет им список фильмов. Затем они могут наводиться над заголовком, и появляется кнопка " Add Movie. Они могут щелкнуть по нему, чтобы он был добавлен на их главную страницу. Но теперь я пытаюсь понять, как они могут удалить этот фильм из базы данных. Но я не могу найти ясный пример того, как это сделать.

Вот как я показываю фильмы,

%div{"ng-repeat" => "movie in movies"}
  {{ movie.id }}
  {{ movie.title }}
  %a{"ng-click" => "deleteMovie($index)"}delete

Я думаю, что мне нужно создать действие delete в моем контроллере с именем deleteMovie которое работает с сервисом для удаления идентификатора из базы данных.

Вот как я вижу услугу,

.factory('removeMovie', ['$http', function($http) {
  return {
    deleteMovie: function() {
      return $http.delete('/movies.json/$id');
    }
  };
}])

В deleteMovie будет вызываться deleteMovie. Но у меня такое чувство, что я приближаюсь к этому неправильно.

Теги:

3 ответа

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

Пожалуйста, следуйте приведенному ниже коду.

Просмотр HTML

%div{"ng-repeat" => "movie in movies"}
{{ movie.id }}
{{ movie.title }}
%a{"ng-click" => "deleteMovie(movie)"}delete

контроллер

.controller('MainController', ['$scope','removeMovie',
 function($scope, removeMovie) {
  $scope.deleteMovie = function(movie){
    removeMovie.deleteMovie(movie.id).then(function(sucessResponse){
      //success callback
    },function(errorResponse){
      //Error callback
    })
  }
 }
]);

завод

.factory('removeMovie', ['$http', function($http) {
  return {
    deleteMovie: function(movieId) {
    var _movieId =  parseInt(movieId);
    return $http.delete('/movies.json/'+_movieId);
  }
 };
}]);

если вы используете статический json, тогда вам не нужно делать какой-либо запрос на отдых. Вы можете просто сращивание фильм из фильмов array.if вы удаляете фильм из базы данных, то вам необходимо сделать запрос на отдых, как это $ http.delete( "/кино/" +_movieId);

2

Передайте весь объект фильма, чтобы вы могли использовать его для сообщения, а также просто индексировать его в массиве для локального удаления.

Отрегулировать завод для идентификатора

.factory('removeMovie', ['$http', function($http) {
  return {
    deleteMovie: function(id) {
      return $http.delete('/movies/' +id);
    }
  };
}]);

HTML

"ng-click" => "deleteMovie(movie)"}delete

Теперь сделайте запрос от контроллера и удалите из локального массива при завершении

$scope.deleteMovie = function(movie) {
    removeMovie.deleteMovie(movie.id).then(function(resp){
        // validate your response here before next step

         // get index of movie in array
         var idx = $scope.movies.indexOf(movie);
         //remove from array
         $scope.movies.splice( idx, 1);
    });
}

Обратите внимание, что кажется странным иметь фабрику только для removeMovie. Обычно у вас будут все операции с CRUD на одной фабрике

1

если служба вызывает только один HTTP-вызов, вы можете хорошо написать, что уже я ваш контроллер:

Посмотреть:

%div{"ng-repeat" => "movie in movies"}
  {{ movie.id }}
  {{ movie.title }}
  %a{"ng-click" => "deleteMovie(movie.id)"}delete

и в контроллере

.controller('myCtrl', ['$scope', '$http', function($scope, $http) {
    $scope.deleteMovie = function(id) {
        $http.delete('/movies.json/' + id);
    }
}])

Ещё вопросы

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