Я настроил свой MongoDb и API REST, и когда я попытался подключить его к моему угловому приложению, я думаю, что он не может решить.
Я изучаю приложение MEAN в этом учебнике.
Это моя конфигурация ui-router.
var app = angular.module('flapperNews', ['ui.router']);
app.config([
'$stateProvider',
'$urlRouterProvider',
function($stateProvider,$urlRouterProvider){
$stateProvider
.state('home',{
url: '/home',
templateUrl: '/home.html',
controller: 'MainCtrl',
resolve: {
postPromise: ['posts',function(posts){
return posts.getAll();
}]
}
})
.state('posts',{
url: '/posts/{id}',
templateUrl: '/posts.html',
controller: 'PostCtrl'
});
$urlRouterProvider.otherwise('home');
}
]);
И это мой завод.
app.factory('posts', ['$http',function (){
var o = {
getAll: function(){
return $http.get('/posts').success(function(data){
angular.copy(data,o.posts);
});
}
};
return o;
}]);
И это возвращение/сообщений
curl http://localhost:3000/posts/
[{"_id":"564f63d0e1f4efce4e36d863","name":"test","link":"http://test.com","__v":1,"comments":["564f70adf3340cab52f9d117"],"upvotes":2}]
Результатом является белая страница с ошибкой whitout. Вы можете мне помочь?
Проблема, которую вы имеете здесь, связана с сервисом $ http на вашем заводе. Вам нужно ввести его в функцию, например:
app.factory('posts', ['$http',function ($http){
var o = {
getAll: function(){
return $http.get('/posts').success(function(data){
angular.copy(data,o.posts);
});
}
};
return o;
}]);
Остальная часть кода в порядке, она должна работать без каких-либо проблем. Вот один модифицированный и упрощенный plunker, который использует $q
для возврата обещания вместо $http
так как у меня нет конечной точки http для вызова.
Внесите $ http на свой завод, как показано ниже.
app.factory('posts', ['$http',function ($http){ your code }])
Одна ошибка, которую я вижу, заключается в том, что вы не вернули обещание в своем решении. getAll()
использует async api, и вам придется возвратить обещание. Так что измените
posts.getAll();
в
posts.getAll().then(function(data) {
return data.data;
})
в вашем решении. Однако я не уверен, полностью ли это решит вашу проблему.