0
私は私のangularAppは、私がホームページをロードすると、私はこのことを理解していない不明プロバイダ:postPromiseProvider < - postPromise < - MainCtrl
Unknown provider: postPromiseProvider <- postPromise <- MainCtrl
を言ってエラーが出る
var app = angular.module('flapperNews', ['ui.router']);
app.factory('posts', ['$http',function($http) {
var posts = [
{ title: 'post 1', upvotes: 5 },
{ title: 'post 2', upvotes: 2 },
{ title: 'post 3', upvotes: 15 },
{ title: 'post 4', upvotes: 9 },
{ title: 'post 5', upvotes: 4 }
];
var service = {};
service.getAll = function() {
return $http.get('/posts').success(function(data){
angular.copy(data, posts);
});
};
service.create = function(post) {
return $http.post('/posts', post).success(function(data){
posts.push(data);
});
};
service.getPosts = function() {
return posts;
};
service.upvote = function(post) {
return $http.put('/posts/' + post._id + '/upvote').success(function(data){
post.upvotes += 1;
});
};
service.get = function(id) {
return $http.get('/posts/'+id).then(function(res) {
return res.data;
});
}
return service;
}]);
app.controller('MainCtrl', ['$scope', 'postPromise',
function($scope, postPromise) {
$scope.posts = postPromise;
$scope.title = null;
$scope.link = null;
$scope.test = "Hello World";
$scope.addPost = function() {
if (!$scope.title || $scope.title === '') {
return;
} else {
posts.create({
title: $scope.title,
link: $scope.link,
});
$scope.link = '';
$scope.title = '';
}
};
$scope.incrementUpvotes = function(post) {
posts.upvote(post);
};
}
]);
app.controller('PostsCtrl', [
'$scope',
'posts',
'post',
function($scope, posts, post) {
$scope.post = post;
$scope.addComment = function(){
if($scope.body === '') { return; }
$scope.post.comments.push({
body: $scope.body,
author: 'user',
upvotes: 0
});
$scope.body = '';
};
}
]);
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: 'PostsCtrl',
resolve: {
post: ['$stateParams', 'posts', function($stateParams, posts) {
return posts.get($stateParams.id);
}]
}
});
$urlRouterProvider.otherwise('home');
}
]);
を書かれています。 私はコードを再構築して、コントローラをコントローラの上に置いてみましたが、それでも同じエラーがスローされます。
PS - の記事を取得するためのネットワーク呼び出しが行われた(私はNetwrok呼び出しブラウザでそれを見ることができます)
しかし、なぜそれが(記事は「解決」に定義されているコントローラのようなものです)、そのようにPostsCtrlのために働くのでしょうか?それがそこで動作するなら、なぜここにいないのですか? –
注射リストに正しく名前が付けられているので、 'PostsCtrl'で動作します – Chanthu
注射リストに投稿と投稿の両方があります。 私は$ scope.post = postと言うと、返されたデータを解決する –