2015-07-14 4 views
0

У меня есть данные, хранящиеся в базе данных nosql, которые я могу видеть при доступе к localhost: 3000/countries.получить данные json с помощью GET в angularjs

Я пытаюсь использовать эту фабрику, чтобы получить данные, которые находятся в json.

.factory('countries', ['$http', '$q', 
    function($http, $q) { 


    var countries = { 
       get: function() { 
        return $q(function(resolve, reject) { 
         $http({ 
          method: 'GET', 
          url: '/countries' 
         }).then(function(response) { 

          resolve(response.data); 
         }, function(error) { 

          reject(error); 
         }); 
        }); 
       }; 

    return countries; 
    } 
]); 

И я пытаюсь использовать этот контроллер для отправки этих данных в соответствующий URL, который будет отображаться, но она не работает, как я ожидал, что это.

.controller('CountriesCtrl', function($scope, countries) { 
    console.log(countries); 
    countries.get(function(countries) { 
     $scope.countries = countries; 
    }); 
}) 

Любые мысли или предложения? Благодаря!

+1

Вы должны вводить свой вновь созданный заводскую службу, т.е. _devices_ –

+0

Если вы используете [Ui-маршрутизатор] (https://github.com/angular-ui/ui-router/wiki#resolve) разрешить для обеспечения вашего контроллера содержимым или данными, которые являются обычными для состояния. В функции разрешения используйте службу, описанную @Alex, а затем внутри контроллера вы должны будете ввести имя разрешения, и данные готовы к использованию. – tomepejo

ответ

0

Это то, что я использую в настоящее время в моем проекте, который использует MongoDB

cmsApp.factory("tasks", ["$resource", function($resource) { 
    return $resource("/tasks/", {}, { 
    save: { 
     method: 'POST', 
     isArray: true 
    }, 
    'delete': { 
     method: 'DELETE', 
     isArray: true 
    } 
    }); 
}]); 

Тогда в контроллере (убедитесь, чтобы ввести его в контроллер!):

$scope.tasks = tasks.query(); 

.query() выбирает все данные в то время как .get() переходит на Id

0

Вы должны ввести свою фабрику в свой контроллер, что-то вроде этого:

.controller('CountriesCtrl', function($scope, devices) { 
    console.log(countries); 
    countries.get(function(data) { 
     $scope.data = data; 
    }); 
}) 
0

Вы должны вводить сервисные «устройства», а не внутренние переменные страны.

.controller('CountriesCtrl', function($scope, devices) { 
    console.log(devices); 
    devices.get().then(function(countries) { 
     $scope.countries = countries; 
    }); 
}); 
+0

К сожалению, это должны были быть страны. Ошибка при отправке. – tryingtolearn

+0

Хорошо, вы пробовали мой фрагмент кода со «странами» вместо «устройств»? Какие журналы или результаты вы видите и что ожидается? – Alex