2017-04-06 6 views
1

약속에서 객체 배열을 가져 오는 데 문제가 있습니다. 두 가지 문제가 있습니다. 먼저 GetAccounts()AccountService에서 호출되면 2 개의 객체를 반환합니다. 해결, 변수 결과를 확인할 때 2 개체가 없습니다. 둘째, 컨트롤러가 인스턴스화되면이 오류 메시지가 표시됩니다. 계정이 정의되지 않았습니다.. 아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까? 미리 감사드립니다.

AccountService.js

app.factory('AccountService', ['$http', function ($http) { 
    return { 
     GetAccounts: function() { 
      return $http.get('api/Account/GetAccounts') 
      .then(function success(response) { 
       return response.data; 
      }, function error(response) { 
       return console.log("Oops!"); 
      }); 
     } 
    }; 
}]); 

AdminController.js

app.component('admin', { 
    templateUrl: 'Content/app/components/admin/Admin.html', 
    bindings: { 
     accounts: '<' 
    }, 
    controller: function() { 
     this.accounts = accounts; 
    } 
}) 

RO

app.config(['$routeProvider', function ($routeProvider) { 
    $routeProvider.when('/admin', { 
     template: '<admin accounts="$resolve.GetAccounts"></admin>', 
     resolve: { 
      GetAccounts: ['AccountService', function (AccountService) { 
       var result = AccountService.GetAccounts(); 

       return result; 
      }] 
     } 
    }) 
}]); 
+0

당신은 실제로 API를 만들었습니다? – floor

+0

[ngRoute를 사용하여 구성 요소 컨트롤러에 서비스 연결 문제 해결] (http://stackoverflow.com/questions/43242296/issue-with-ngroute-injecting-resolve-services-into-component-controller)의 가능한 복제본. – georgeawg

+0

'GetAccounts' 함수는 거부 된 약속을 ** 성공적인 약속으로 ** 변환하는 ** 것이라는 점에 유의하십시오. [$ q를 가진 각도 실행 명령] (http://stackoverflow.com/questions/34324153/angular-execution-order-with-q/34326388#34326388) - georgeawg – georgeawg

답변

1

ute.js 작동 얻기 위해 다음과 같이 변경합니다.

AdminController.js

app.component('admin', { 
    templateUrl: 'Content/app/components/admin/Admin.html', 
    bindings: { 
     accounts: '<' 
    } }) 

route.js

app.config(['$routeProvider', function ($routeProvider) { 
    $routeProvider.when('/admin', { 
     template: 'template.html', 
     resolve: { 
      GetAccounts: ['AccountService', function (AccountService) { 
       var result = AccountService.GetAccounts(); 

       return result; 
      }] 
     }, 
     controller:['$scope','GetAccounts',function($scope, GetAccounts){ 
      $scope.accounts = GetAccounts; 
     }] 
    }) 
}]); 

template.html

<div> 
<admin accounts="accounts"></admin> 
</div> 
+1

고마워,이 작품! –