Angular를 처음 사용했습니다. 간단한 웹 페이지가 있지만 컨트롤러 코드가 작동하지 않습니다. 그것은 전화를하거나 "ListLogsFactory"컨트롤러에 서비스를 제대로 삽입하지 않는 것 같습니다. 도와주세요. 고맙습니다. 당신은 당신이 뭔가를 반환해야 factory
사용하는 경우컨트롤러에 서비스 제공
var myApp = angular.module("ListLogsModule", []);
myApp.factory('ListLogsFactory', function ($http) {
var thisPageNumber = 1;
var thisPageSize = 10;
var baseUrl = '../Api/LogApi/GetLogsByPage';
var items = {};
$http({
method: 'GET',
url: baseUrl,
data: $.param({ pageNumber: thisPageNumber, pageSize: thisPageSize })
})
.success(function (data, status, headers, config) {
items = data;
console.log(items);
})
.error(function (data, status, headers, config) {
alert('error: ' + status);
});
function getData() {
return items;
}
});
// The error is seen in FireFox and happens in the controller code:
myApp.controllers.ListLogsController = function ($scope, ListLogsFactory) {
$scope.logs = ListLogsFactory.getData(); // NOTE: this line throws error on running with something like "ListLogsFactory" is undefined
}
답장을 보내 주셔서 감사합니다. "서비스"에서 공용 메서드를 정의하는 방법을 적용하고 "ListLogsFactory is undefined"오류가 없어졌습니다. 그러나 내보기 페이지에서 데이터 바인딩을 볼 수 없습니다. 컨트롤러에서 "약속"을 어떻게 사용하여 원격 서버에서 반환 된 데이터가 준비 될 때까지 데이터 바인딩이 지연됩니까? 서버 측 로그에서 API RESTful 메소드가 호출되고 데이터가 반환되는 것을 보았습니다. –
아마 이것처럼 http://markdalgleish.com/2013/06/using-promises-in-angularjs-views/ 쉬운 방법은'$ routeProvider'에 컨트롤러를 가지고 있고'resolve'를 사용하는 것입니다 –