@maxprof
Студент

Почему не работает форма добавления товара?

Здравствуйте, подскажите пожалуйста почему не добавляется товар в файл JSON?
Форма добавления:
<form action="">
	Название <input type="text" ng-model="newData.name">
	Описание <input type="text" ng-model="newData.description">
	Страна производитель <input type="text" ng-model="newData.country">
	Калорийность <input type="text" ng-model="newData.calories">
	Цена <input type="text" ng-model="newData.price">
	Термин хранения <input type="text" ng-model="newData.termin">
	Дата изготовления <input type="text" ng-model="newData.data">
	<button ng-click="addProduct()">Добавить новый продукт</button>
</form>


Контроллер:
productApp.controller('ProductListCntrl',['$scope','$http','$location', function($scope, $http,$location){
	$http.get('products.json').success(function(data, status, headers, config){ // Посылаю запрос для получение данных, если успешно, то
		$scope.products = data; // products заношу все полученные данные
		$scope.addProduct = function(){ // В объект  addProduct записываю значение функции
			$scope.data.push($scope.newData); // в полученную информацию (переменная data) пушу значение newData из формы
			$scope.newData=''; // слабо понимаю что тут происходит)
		};
	});
}]);

Пример JSON:
[
    {
        "productId": "Milk", 
        "name": "Молоко", 
        "description": "Хорошее молоко",
        "country": "Украина",
        "calories": "220 Ккал",
        "price": 12,
        "termin": 3,
        "data": "12.05.2015"
    },
  • Вопрос задан
  • 257 просмотров
Решения вопроса 1
baskerville42
@baskerville42
Учусь работать (Junior)
Во первых, есть ng-submit директива, а у вас калокод извините. Во вторых для того что бы сделать массив с объектом нужно его сначала в виде переменной запилить. Опишите конкретной задачу, я вам помогу.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AMar4enko
@AMar4enko
Т.е. вы этим кодом хотите добавить данные в файл products.json? Тогда у меня для вас плохие новости.
UPD:
У вас фундаментальные пробелы.
Никакого файла products.json в вашем коде не существует. Конструкция
$http.get('products.json').success(function(...){});

запрашивает с сервера данные по ссылке 'products.json', после чего преобразует полученные данные в объект JavaScript, и возвращает этот объект вам в качестве параметра data функции обратного вызова.
Вы ожидаете, что у вас в data придет некий объект, магически связанный с файлом products.json, сделав push в который вы обновите этот файл на сервере. Но это не так, вы всего лишь получаете локальный объект, содержащий данные, которые вам вернул сервер в ответ на GET-запрос.
Ответ написан
codingal
@codingal
Front end и не только
У вас форма никак не привязана к контроллеру, нужно подключить и весь контроллер и отдельно метод addProduct на ng-submit
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы