2014-07-22 4 views
0

AngularJS의 CRUD에 대한 함수 집합 (라이브러리 종류)을 개발하여 프로젝트의 엔티티 몇 개를 다시 사용할 수있게하려고합니다. 서버 통신을 위해 나는 $ resource의 factory를 만들고 적절하게 사용했다. $ 자원 공장은 다음과 같습니다AngularJS의 기본 함수 라이브러리 작성 방법

모델 파일 : 여기

getEntity.entity_view.get(
    function(entity_list){ 

    }, 
    function(error){ 

    }  
) 

:

var get_entity_model = angular.module("app.getentity", []).factory('getEntity', ['$resource', function($resource) { 
     return{ 
      entity_view: $resource(baseurl+'/rest/'+serviceName+'/entity/:id/?app_name='+appName+'&fields=*', null, {'update': { method:'PUT' }})    
     } 
    }]); 

그리고 여기 컨트롤러에

컨트롤러 파일을 사용하고 방법 entity_view는 테이블 이름입니다. 나는 위의 요청의 성공 함수에 넣은 관련 테이블 등 코드의 데이터를 얻기 위해 페이지 매김 및 하위 요청과 같은 모든 관련 함수를 전달합니다.

entity.getEntity()

:

지금 나는이 모든 물건을 정의하고 단순히 내가 좋아하는 모든 물건을 얻을 수 있어야 함수를 호출 할 수있는 라이브러리를 만들고 싶어

위 코드와 동일한 결과를 반환해야합니다.

위의 작업을위한 팩토리를 만들려고했지만 콜백 함수가 필요하며 공장에서 함수가 이미 모델 파일에서 가져온 데이터 만 반환하므로 크기가 작고 사용하기 쉽도록해야합니다. 공장 파일에서

공장 코드 :

var api = angular.module("app.entity_api", []).factory('entity_factory', ['$resource','getEntity',function($resource,getEntity) { 
    var entity_factory = {}; 
    entity_factory.get_entity = function(callback){ 
     getEntity.entity_view.get().$promise.then(
       function(data){ 
         callback(data.record); 
       } 
       ); 
    } 
    return entity_factory; 
}]); 

그리고 여기에 내가 컨트롤러에서 함수를 호출하는 방법 :

컨트롤러 코드 :

api.controller("sample",['entity_factory','getEntity','$scope',function(entity_factory,getEntity,$scope){ 
    $scope.init = function(){ 
     entity_factory.get_entity(
      function(data){ 
       console.log(data); 
      } 
     ); 
    } 
    $scope.init(); 
}]) 

문제는 내 entity_factory이다 코드는 나머지 코드에서 서버의 데이터 만 반환합니다. 내 현재 운동보다 큰 차이가없는 것처럼 보이는 콜백 함수에서 수행하십시오. 그래서, 문제는 어떻게하면 다른 엔티티에 대해 코드를 재사용 할 수있게 컴파일 된 결과를 반환하는 추가 코드로 함수 라이브러리를 작성하고 컴팩트하게 만들겠습니까?

+0

데이터로 수행 할 작업에 따라 다릅니다. 반환 된 데이터를 처리하는 방법을 "하드 코딩"하려면 그 내용을 알려주십시오. 빈 배열을 반환하고 도착한 데이터를 채우는'$ resource' 접근법을 사용할 수도 있습니다. – gkalpak

+0

답변 해 주셔서 감사합니다. CRUD 작업을 데이터로 수행하고 싶습니다. 데이터를 가져오고 게시하고 업데이트해야하며 필요하면 lib가 필요합니다. 필요할 때마다 호출해야하는 데이터를 가져 오거나 게시하거나 업데이트해야 할 때마다 단순히 entity.getEntity (), entity.postEntity (data), entity.updateEntity (id) – Dhaval

+0

그리고 무엇이 문제입니까?위의 코드로 왜 이렇게 할 수 없습니까? – gkalpak

답변

0

나는 당신이 도서관을 만들려고 생각하지만이 경우 바퀴를 재발 명하고 소중한 시간을 절약하는 것을 좋아한다. Restangular을 확인하면 작업이 훨씬 쉬워집니다. Restangular는 최소한의 클라이언트 코드로 일반적인 GET, POST, DELETE 및 UPDATE 요청을 단순화하는 AngularJS 서비스입니다. RESTful API의 데이터를 사용하는 모든 웹 애플리케이션에 가장 적합합니다.

관련 문제