Angular를 사용하여 새 모델 저장JS 및 $리소스
Angular에 대해 이해하려고 노력 중이야JS는 $resource를 사용하지만, 제가 보는 대부분의 예에서는 $resource를 사용하여 실제로 새로운 인스턴스를 생성하는 방법 또는 전체 설정을 어떻게 해야 하는지 설명하지 않습니다.이 밑에 코드를 올렸어요
'/entry/api'에 게시하면 새 엔트리가 생성됩니다.엔트리 오브젝트 자체에는 이름, 설명 및 ID의 세 가지 속성이 있습니다.
$sec.save();를 호출하면 다음 두 가지 작업을 수행할 수 있다고 생각했습니다.
- 입력 필드를 POST 데이터로 매핑합니다.
- $리소스(이 경우 '/entry/api')에 정의된 URL에 POST 요청을 합니다.
지금까지 살펴본 몇 가지 예는 데이터를 리소스에 수동으로 매핑하는 것입니다.
var entry = new Entry();
entry.name = $name; // defined in entryController
entry.description = $scope.description; // <-- defined in entryController
entry.$save()
이 필드들은 html에 정의되어 있기 때문에 필수는 아니라고 생각했습니다.이 솔루션의 결과는 다음과 같습니다.
- 백엔드에서 모델 정의
- 프런트 엔드에서 모델 정의(entry Controller)
div
) - entryController에서 값 추가
div
모델의 JS 버전으로 이동한 다음 최종적으로 저장합니다.
Angular의 방식일 수도 있어JS는 동작하지만 HTML 입력 필드가 자동으로 매핑되는 줄 알았어요.
그렇지 않으면 (백엔드) 모델의 속성을 추가하거나 제거할 경우 코드에서 최소 3개의 위치를 업데이트해야 합니다.
Angular는 어떻게 쓰죠?JS와 함께$resource
새 개체를 저장할 수 있습니까?
angular.module('entryManager', ['ngResource']);
function pollController($scope, $resource) {
$scope.polls = $resource('/entry/api/:id', {id: '@id'});
$scope.saveEntry = function() {
this.save();
}
}
<html ng-app="entryManager">
... <-- include angularjs, resource etc.
<div ng-controller="entryController">
<input type='text' ng-model="name"><br/>
<textarea ng-model="description" required></textarea><br/>
<button class="btn btn-primary" ng-click="saveEntry()">Save</button>
</div>
처음 생각했을 때 주목해야 할 건scope != model
, 단, 스코프에는 모델을 포함할 수 있습니다.
범위 내에 오브젝트가 몇 개 있고 저장해야 합니다.
예를 들어 다음과 같은 것이 있습니다.
HTML:
<div ng-controller="entryController">
<input type='text' ng-model="poll.name"><br/>
<textarea ng-model="poll.description" required></textarea><br/>
<button class="btn btn-primary" ng-click="saveEntry()">Save</button>
</div>
JavaScript:
function pollController($scope, $resource) {
var polls = $resource('/entry/api/:id', {id: '@id'});
$scope.saveEntry = function() {
polls.save($scope.poll);
}
}
참고 1: 초기화된 폴 오브젝트가 없는 경우에도 Angular는입력을 시작하면 JS가 자동으로 새 개체를 만듭니다.
주의 2: 폼을 다음 주소로 랩하는 것이 좋습니다.ngForm
(추가함으로써)ng-form="someformname"
ng-controller로 div 또는 랩으로 설정<form name='...'>..</form>
이 경우 다음 방법으로 폼의 유효성을 확인할 수 있습니다.$scope.someformname.$valid
저장하기 전에.
좋은 예는 Angular의 메인 페이지에 있습니다."백엔드 배선" 섹션의 JS 웹 사이트(btw, 내가 가장 좋아하는 항목).
모델 객체 자체에 저장 메서드를 사용하지 말고 모델 클래스의 저장 메서드를 사용합니다. 예:
//inject User resource here
$scope.user = new User();
$scope.user.name = "etc";
User.save($scope.user,function(response){
});
이전에 사용하고 있었다$scope.user.$save(function(response){})
object$syslog.user를 클리어하고 .
언급URL : https://stackoverflow.com/questions/16153313/saving-new-models-using-angularjs-and-resource
'programing' 카테고리의 다른 글
JSON을 기존 개체로 역직렬화(Java) (0) | 2023.03.01 |
---|---|
woocommerce에서 현재 사용자의 모든 주문을 가져오는 방법 (0) | 2023.03.01 |
Django REST Framework에서 커스텀 JSON을 반환하는 방법 (0) | 2023.03.01 |
powershell 3에서 json을 예쁘게 하다 (0) | 2023.03.01 |
React 16의 hydrate()와 render()의 차이점은 무엇입니까? (0) | 2023.03.01 |