programing

Angular를 사용하여 새 모델 저장JS 및 $리소스

javamemo 2023. 3. 1. 08:47
반응형

Angular를 사용하여 새 모델 저장JS 및 $리소스

Angular에 대해 이해하려고 노력 중이야JS는 $resource를 사용하지만, 제가 보는 대부분의 예에서는 $resource를 사용하여 실제로 새로운 인스턴스를 생성하는 방법 또는 전체 설정을 어떻게 해야 하는지 설명하지 않습니다.이 밑에 코드를 올렸어요

'/entry/api'에 게시하면 새 엔트리가 생성됩니다.엔트리 오브젝트 자체에는 이름, 설명 및 ID의 세 가지 속성이 있습니다.

$sec.save();를 호출하면 다음 두 가지 작업을 수행할 수 있다고 생각했습니다.

  1. 입력 필드를 POST 데이터로 매핑합니다.
  2. $리소스(이 경우 '/entry/api')에 정의된 URL에 POST 요청을 합니다.

지금까지 살펴본 몇 가지 예는 데이터를 리소스에 수동으로 매핑하는 것입니다.

var entry = new Entry();
entry.name = $name; // defined in entryController
entry.description = $scope.description; // <-- defined in entryController
entry.$save()

이 필드들은 html에 정의되어 있기 때문에 필수는 아니라고 생각했습니다.이 솔루션의 결과는 다음과 같습니다.

  1. 백엔드에서 모델 정의
  2. 프런트 엔드에서 모델 정의(entry Controller)div)
  3. 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

반응형