Я начинаю изучать 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, но я использую его в своей функции удаления, и он отлично работает, что я пропустил здесь?
завод
Поэтому, создавая фабрику для 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.
Вывод
Очистите свои заводы, чтобы выглядеть так, и вы можете легко написать ряд методов многократного использования, которые легко создать в вашем контроллере.
formFeature
определено в возврате с сервера вcreateFeature
. Вы инициализируете его, когда создается относительный контроллер?