gpt4 book ai didi

javascript - AngularJS : Load defer JSON and Use It between multiple Controllers

转载 作者:行者123 更新时间:2023-11-28 05:47:28 26 4
gpt4 key购买 nike

先生们,我在使用 AngularJS 时遇到了问题...

我正在尝试在 Promise 中加载 JSON 文件,并将其与两个不同的 Controller 一起使用...我尝试了很多不同的技术,但我不明白...你能帮我吗?

//SERVICE
app.service('AllPosts', function($http, $q){
var deferred = $q.defer();
$http.get('posts.json').then(function(data){
deferred.resolve(data);
});
this.getPosts = function(){
return deferred.promise;
};
this.getPost = function(id){
var post={};
angular.forEach(deferred.promise, function(value) {
if(value.id == id){
post=value;
}
});
return post;
};
});

我正在创建一个服务来调用 JSON,并以同样的方式为我的 Controller 声明我的函数...

app.controller('AllCtrl', function($scope, AllPosts){   
AllPosts.getPosts().then(function(posts){
$scope.posts = posts.data;
});
});

在我的第一个 Controller 中,我调用函数 getPosts 从 JSON 中获取所有帖子...

app.controller('PostCtrl', function($scope, AllPosts, $routeParams) {
AllPosts.getPost($routeParams.id).then(function(the_post){
$scope.comments = post.comments;
$scope.title = post.name;
$scope.the_content = post.content;
});
});

在第二个 Controller 中,我只想要其中一个帖子,因此我调用函数 getPost...

但是我不知道该怎么做,在第一种情况下它适用于所有帖子,但在第二种情况下,不...我是 Angular 的新手,如果你有其他方法,那就是也很棒!非常感谢!

最佳答案

要使您的 getPost() 按照您现在的方式工作,需要执行以下操作:

this.getPost = function(id) {
// return same promise
return deferred.promise.then(function(posts) {
// but return only one post
var post = {};
angular.forEach(posts, function(value) {
if (value.id == id) {
post = value;
}
});
return post;

})

};

但是 $http 本身返回 Promise,因此您根本不需要 $

app.service('AllPosts', function($http) {

var postsPromise = $http.get('posts.json').then(function(response) {
return response.data
});
this.getPosts = function() {
return postsPromise;
};
this.getPost = function(id) {
// return same promise
return postsPromise.then(function(posts) {
// but return only one post
var post = {};
angular.forEach(posts, function(value) {
if (value.id == id) {
post = value;
}
});
return post;

})

};
});

关于javascript - AngularJS : Load defer JSON and Use It between multiple Controllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38384417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com