2015-11-23 3 views
0

Я изучаю ngResource.ngResource запрос, получить и сохранить

Я могу «получить» все значения json-файла. Но я не могу работать с одним значением (с запросом) и обновлять другие.

я все с:

this.total = userService.query(); 

я пытаюсь получить с:

this.user = userService.query({"name":"Luis"}); 

я пытаюсь обновить с:

var userToUpdate = userService.get({},{"name":"Luis"}); 
userToUpdate.name = "Name changed"; 
userToUpdate.$save(); 

Теперь общий код

file1.html

<div ng-app="module" ng-controller="controls as ctrl"> 
<div ng-repeat="item in ctrl.total"> 
<span ng-bind="item.name"></span> 
</div> 

{{ ctrl.total }} 

<br /><br /> 

{{ ctrl.user }} 


</div> 

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-resource.js"></script> 

<script> 
var x = angular.module("module", ["ngResource"]); 


x.factory("userService", ["$resource", function($resource) 
{ 
return $resource("data.json"); 
}]); 


x.controller("controls", ["userService", function(userService) 
{ 

this.total = userService.query(); 

this.user = userService.query({"name":"Luis"}); 

var userToUpdate = userService.get({},{"name":"Luis"}); 
userToUpdate.name = "Name changed"; 
userToUpdate.$save(); 

}]); 

</script> 

data.json

[ 
{"id": 1, "name": "Mario", "lastname": "Perez"}, 
{"id": 2, "name": "Raul", "lastname": "Alvarez"}, 
{"id": 3, "name": "Pedro", "lastname": "Tomas"}, 
{"id": 4, "name": "Luis", "lastname": "Ranks"} 

]

Любой человек может мне помочь? Я новичок. Спасибо за ваше время.

ответ

1

Вы пропустите понимание того, что файл JSON

JSON это формат для хранения данных. Вы можете хранить статические данные в файлах * .json. Таким образом, данные в вашем файле data.json статичны, и это просто статическое хранение некоторых данных.

Итак, когда вы делаете userService.get() с любыми параметрами запроса, вы получите тот же ответ каждый раз. Вы получаете статические данные. Эти данные будут возвращены, несмотря на параметры запроса

И снова. * .json - это просто статическое хранилище данных. Вы не можете обновить его с помощью метода userService.$save(). Вы получите такие же статические данные, как и ответ.

Чтобы обновить что-то, вам понадобится услуга , которая обновит ваши данные. Например, у вас есть серверный сервер, который обновляет data.json.

Таким образом, нормальный случай будет:

  1. Вы бэкенд, которые обработка запросов вашего интерфейса
  2. Frontend будет сделать некоторые запросы, как GET/данные или PUT/данные/$ идентификатора (для обновления данных) или POST/data (для добавления данных).
  3. Backend будет реализовывать эти методы

код переднего конца должен быть:

var module = angular.module('myApp', []); 
module.factory('userService', ['$resource', function ($resource) { 
    return $resource('/api/data/:id'); 
}]); 
module.controller('myCtrl', ['$http', function ($http) { 
    userService.get(); // GET /api/data request will be performed 
    userService.put({id: 1}); // PUT /api/data/1 request will be performed 
    userService.post({name: 'someName'}); // POST /api/data will be performed 
}]); 

Я бы не предоставить код серверной. Он будет манипулировать файлом * .json в вашем случае.

+0

Спасибо большое! Да! Но ПОЧЕМУ я не могу ПОЛУЧИТЬ с запросом ТОЛЬКО одна «запись», например: this.user = userService.query ({"name": "Luis"}); – Peter

+1

Потому что это статический файл json. Вы можете получить JUST ONE запись в обработчике запроса data.json. 'data.json' не является скриптом, который может обрабатывать запрос' name = Luis'. Весь файл будет возвращен. –

 Смежные вопросы

  • Нет связанных вопросов^_^