8

Mam aplikację RESTful z Laravel 4 i Angular JS.

W moim laravel Controller,

public function index() { 

    $careers = Career::paginate($limit = 10); 

    return Response::json(array(
    'status' => 'success', 
    'message' => 'Careers successfully loaded!', 
    'careers' => $careers->toArray()), 
    200 
); 
} 

A kątowa skrypt,

var app = angular.module('myApp', ['ngResource']); 

app.factory('Data', function(){ 
    return { 
     root_path: "<?php echo Request::root(); ?>/" 
    }; 
}); 

app.factory('Career', [ '$resource', 'Data', function($resource, Data) { 
    return $resource(Data.root_path + 'api/v1/careers/:id', { id: '@id'}); 
}]); 

function CareerCtrl($scope, $http, Data, Career) { 

    $scope.init = function() { 
     $scope.careers = Career.query(); 
    }; 
} 

Oto jestem trochę zdezorientowany do obsługi danych odpowiedzi przypisać do zmiennej zakres, teraz jestem coraz pustą tablicę [] w $scope.careers. A także jaki sposób można obsłużyć sukcesów i błędów, aby pokazać niektóre komunikaty jak na poniższym normalnego $http service,

$scope.init = function() { 

    Data.showLoading(); // loading progress 
    $http({method: 'GET', url: Data.root_path + 'api/v1/careers'}). 
    success(function(data, status, headers, config) { 
     Data.hideLoading(); 
     $scope.careers = data.careers.data; 
    }). 
    error(function(data, status, headers, config) { 

     if(data.error.hasOwnProperty('message')) { 
      errorNotification(data.error.message); 
     } else { 
      errorNotification(); 
     } 

     $scope.careers = []; 
    }); 
}; 

Zobacz moją prośbę w konsoli przy użyciu $ zasobu.

enter image description here

Odpowiedz

15

Spróbuj tego:

app.factory('Career', [ '$resource', 'Data', function($resource, Data) { 
    return $resource(Data.root_path + 'api/v1/careers/:id', { id: '@id'}, { 
    query: { 
     isArray: false, 
     method: 'GET' 
    } 
    }); 
}]); 


Career.query(function(res) { 
    $scope.careers = res.careers.data; 
}, function(error) { 
    // Error handler code 
}); 
+0

Dzięki, zaoszczędzisz mój czas ... – devo

+0

samo tutaj walczyłem o godziny – Awena

2

Zob. http://docs.angularjs.org/api/ngResource $ zasób

$scope.init = function() { 
    var success = function(careerList, getResponseHeaders){ 
     $scope.careers = careerList; 
    }; 
    var failure = function(data){ 
     // TODO 
    }; 
    Career.query(success, failure); 
}; 

Z powodu tych dziwactw i innych przykrości Proponuję użyć Restangular zamiast domyślnego $ zasobu. To czyni życie łatwiejszym

+0

moje pierwsze pytanie, dlaczego jestem coraz pusta tablica [] w $ scope.careers? – devo

+0

Nie jestem pewien, może to być domyślne, gdy wystąpi awaria ... – fabrizioM

+0

To nie jest błąd. Zobacz zrzut ekranu, otrzymuję wszystkie wartości, jak mogę odwzorować to na zmienną zakresu? – devo

Powiązane problemy