Crud с Angularjs и http службы

0

Я начинаю изучать angularjs, пока я могу создать обновление delete withoud с помощью сервисов. Я пытаюсь перейти на следующий уровень: Ive создал служебную страницу, которая выглядит так:

app.factory('MainService', function($http) { 

    var getFeaturesFromServer = function() {
        return $http.get('restfullfeatures/features');
    }


    var deleteFeature = function(id) {
        return $http.post('restfullfeatures/delete', {'id': id});
    }

    var createFeature = function(feature) {
        return $http.post('restfullfeatures/create', {'title': feature.title, 'description': feature.description});
    }

    return {
        getHello : getHello,
        getFeatures: getFeaturesFromServer,
        deleteFeature: deleteFeature,
        createFeature: createFeature
    }

});

и моя функция добавления в контроллер выглядит следующим образом:

$scope.add = function(){

        MainService.createFeature($scope.formFeature)

            .then(function(response) {
                console.log('feature created',response.data);
                $scope.features.push($scope.formFeature);
                $scope.formFeature = {};
            }, function(error) {
                alert('error',error);

        });

    };

И это моя функция postCreate:

public function postCreate()

{
    \App\Feature::create(
        ['title' => \Input::get('title'), 
        'description' => \Input::get('description')
        ]);

    return ['success' => true];

}

У меня есть таблица в моей базе данных, которая называется функциями, поэтому в основном то, что я пытаюсь сделать, это добавить новую функцию в мою таблицу, используя angularjs, мой контроллер, похоже, не распознает formFeature, все, что я получаю, является "undefined", после чего я получаю ошибку: Can not read свойство типа undefined, но я использую его в своей функции удаления, и он отлично работает, что я пропустил здесь?

  • 0
    Из вашего кода мы видим, что formFeature определено в возврате с сервера в createFeature . Вы инициализируете его, когда создается относительный контроллер?
  • 0
    Как я могу инициализировать это? Пожалуйста, потерпите меня, я новичок во всем этом. Спасибо
Показать ещё 3 комментария
Теги:
laravel-5.1

1 ответ

0

завод

Поэтому, создавая фабрику для CRUD, попробуйте выложить свою фабрику, как показано ниже. Например, какой-то код, который я написал для проекта, каждый вызов будет делать другое, идея заключается в том, что вы добавляете метод, который вы можете создать при добавлении фабрики к контроллеру. (примечание: не используйте $rootScope для сеанса)

.factory('Chats', function ($http, $rootScope, $stateParams) {

  return {
    all: function () {
      return $http.get('http://your_ip/chats', { params: { user_id: $rootScope.session } })
    },
    get: function () {
      return $http.get('http://your_ip/chat', { params: { user_id: $rootScope.session, chat_id: $stateParams.idchat } })
    },
    add: function (id) {
      return $http.post('http://your_ip/newChat', { params: {idfriends:id}})
    }
  };
});

контроллер

когда вы создаете это в своем контроллере, вы смотрите на что-то вроде этого

.controller('ChatsCtrl', function ($scope, Chats) {

  Chats.all().success(function (response) {
    $scope.chats = response;
  });
  $scope.getChat = function (id) {
    Chats.get().success(function (response) { })
  };

  $scope.addChat = function (id) {
    Chats.add(id).success(function (response) { })
  };
})

$scope.remove и $scope.addChat и связанные с кнопками, которые будут выполняться при нажатии и $scope.chats, привязаны к странице с помощью ng-repeat.

Вывод

Очистите свои заводы, чтобы выглядеть так, и вы можете легко написать ряд методов многократного использования, которые легко создать в вашем контроллере.

Ещё вопросы

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