2014-12-07 1 views
1

meanjs 생성기와 자동 생성 CRUD 모듈을 사용하여 만든 meanjs 앱에서 아래의 수입에 대해 get 메소드에서 반환 한 약속을 맞춤 설정하여 전화를 걸 수 있도록합니다. 메소드를 실행하고 검색된 데이터에 대한 변환을 수행하십시오. 그래서 내 컨트롤러에서 변경하려고 시도 :meanjs 앱 컨트롤러의 약속 "then"은 함수가 아닙니다

// Find existing Income 
    $scope.findOne = function() { 
     Incomes.get({ 
      incomeId: $stateParams.incomeId 
    }).then(function(income){ 
     $scope.income = income; 
     $scope.incomeDollar= income*$scope.dollarRate; 
    }); 

이것은 오류가 발생합니다 : undefined is not function, then on point. 여기서 내가 뭘 잘못하고 있니? 위의 get 메소드에서 가져온 데이터에서 변환을 수행하려면 어떻게해야합니까?

제가 사용하려고하는 패턴은 기사의 끝에 있습니다 here. 짧은 버전에서 긴 버전으로 전환하여 콜백에서 더 많은 작업을 수행 할 수 있습니다.

// LONG: 

myModule.controller('HelloCtrl', function($scope, HelloWorld) { 

    HelloWorld.getMessages().then(function(messages) { 
    $scope.messages = messages; 
    }); 

}); 

이를 단순화하기 위해 문서의 작가가 범위에 '은 getMessages'에 의해 반환 약속 장소 :

// SHORTER: 

myModule.controller('HelloCtrl', function($scope, HelloWorld) { 

    $scope.messages = HelloWorld.getMessages(); 

}); 
+0

수 Incomes 서비스의 정의를 게시 하시겠습니까? – udalmik

+0

나는 추상적 인 워크 플로우를 사용하고 있습니다. Incomes 서비스는 get을 위해 사용자 정의되지 않았으며, put은 put에만 적용됩니다. 사용 된 [이 템플리트] (https://github.com/meanjs/generator-meanjs/blob/master/crud-module/templates/angular-module/services/_client.service.js)에서 볼 수 있듯이 –

+0

getMessages의 짧은 방법은 더 이상 각도 (1.3)로 사용할 수 없습니다. https://docs.angularjs.org/guide/migration –

답변

2

약속 개체가 $ 약속을 사용하여 액세스 할 수 있습니다.

$ 약속 : 이 인스턴스 또는 컬렉션을 만든 원래 서버 상호 작용의 약속 doc

에서 자원 인스턴스 및 컬렉션이 추가 특성을 가지고있다.

성공, 약속은

그래서, 당신의 코드가 같아야합니다 ... 서버에서 데이터로 업데이트 같은 자원 인스턴스 또는 컬렉션 개체로 해결 :

// Find existing Income 
$scope.findOne = function() { 
    Incomes.get({ 
     incomeId: $stateParams.incomeId 
}).$promise.then(function(income){ 
    $scope.income = income; 
    $scope.incomeDollar= income*$scope.dollarRate; 
}); 
관련 문제