2015-09-08 2 views
0

Я пытаюсь взаимодействовать с моим Django Restful API с помощью $ resource, но когда я пытаюсь получить или запрос, он возвращает> 7000 элементов. Это как если бы он возвращал каждую букву/компонент апи индивидуально. Я также попытался использовать '/api/projects.json/' (следуя Учебнику Angularjs) и '/ api/projects /? Format = json' для запроса api, но я получаю тот же результат. Что мне не хватает?Взаимодействие с Django Restful API с помощью Angularjs

Моя_служба:

(function(){ 
angular 
    .module('userdash.projects.services') 
    .factory('ProjectServ', ProjectServ); 

ProjectServ.$inject = ['$resource']; 

function ProjectServ($resource){ 
    return $resource('api/projects/', {},{ 
     create: {method: 'POST'}, 
     get: {method: 'GET', isArray:false}, 
     remove: {method: 'DELETE'}, 
     update: {method: 'PUT'} 
    }) 
} 
})(); 

Мой контроллер:

(function(){ 

angular 
    .module('userdash.projects.controllers') 
    .controller('ProjectController', ProjectController); 

ProjectController.$inject = ['$scope','ProjectServ']; 

function ProjectController($scope, ProjectServ){ 
    ProjectServ.get().$promise.then(function(data){ 
     $scope.projects = ProjectServ.get(); 
    }); 
} 

Моя директива HTML:

<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main" ng-controller="ProjectController"> 
<div class="row"> 
    <div class="col-md-4" ng-repeat="project in projects"> 
     <h2>Heading</h2> 
     <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p> 
     <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p> 
    </div> 
</div> 

Using bootstraps Dashboard template, I get ~>7000 elements in the promise

My RESTfull API

+0

Вы должны установить значение проекта в функции обратного вызова запроса, например 'ProjectServ.query(). $ Prom.then (function (data) {$ scope.projects = ProjectServ.query();})' –

+0

@pankajParkar, I попробовал это, но вернулся тот же ответ – artyfrost

ответ

0

Прежде всего, вам не нужно указывать каждый метод, если вы используете те по умолчанию. Используйте $resource('api/projects/') вместо:

function ProjectServ($resource){ 
    return $resource('api/projects/', {},{ 
     create: {method: 'POST'}, 
     get: {method: 'GET', isArray:false}, 
     remove: {method: 'DELETE'}, 
     update: {method: 'PUT'} 
    }) 
} 

Во-вторых, и решить вашу проблему, вы должны назначить переменную данных, которая поставляется в обещании локальном массиве, как это:

function ProjectController($scope, ProjectServ){ 
    ProjectServ.get().$promise.then(function(data){ 
     $scope.projects = data; 
    }); 
} 

Ура!

+0

Спасибо за помощь Cristiam, но проблема была в моем определении моего метода get. IsArray должен быть True, плюс stripTrailingSlashes: true. – artyfrost

+0

Как насчет вызова get в обратном вызове? Это было правильно? –

Смежные вопросы