gpt4 book ai didi

javascript - Angular 注入(inject)解析到 Controller 日志记录未定义

转载 作者:行者123 更新时间:2023-11-30 16:33:39 29 4
gpt4 key购买 nike

我下定决心:

.state('posts', {
url: '/posts/{id}',
templateUrl: 'posts.html',
controller: 'postsController as postsCtrl',
resolve: {
post: getSinglePostWrapper
}
})

和辅助函数

getSinglePostWrapper.$inject = ['postsService', '$stateParams'];
function getSinglePostWrapper(postsService, $stateParams) {
return postsService.getSinglePost($stateParams.id);
}

我的 Controller 看起来像这样:

angular.module('flapperNews')
.controller('postsController', postsController);

postsController.$inject = ['postsService', 'post'];

function postsController(postsService, post) {
var vm = this;
vm.post = post;
console.log(post); //undefined here
}

当我尝试从解析中注入(inject)帖子时,我得到了一个未定义的“帖子”。我尝试在 getSinglePostWrapper 函数中记录帖子,它记录了正确的对象。我似乎失去了一些绑定(bind)或从解决到 Controller 的东西。

帖子服务

angular.module('flapperNews')
.factory('postsService', postsService);

postsService.$inject = ['httpService'];

function postsService(httpService) {
return {
getSinglePost: getSinglePost
}
function getSinglePost(postId) {
httpService.baseGet('/posts/' + postId)
.then(function(data) {
return data;
}, function(data) {});
}
}

http服务

angular.module('httpService', [])
.factory('httpService', httpService);

httpService.$inject = ['$http', '$q'];

function httpService($http, $q) {
return {
baseGet: baseGet
}
function baseGet(url) {
return $http.get(url).then(
function (result) {
return result.data;
},
function (result) {
return $q.reject(result);
}
);
}

}

并且我已将 httpservice 注入(inject)到我声明 flapperNews 模块的第一个位置。

仅供引用 - 一切正常。其他http请求没问题。这个也不错它只是不将帖子注入(inject) Controller 。

最佳答案

promise 链在这里中断。

  function getSinglePost(postId) {
httpService.baseGet('/posts/' + postId)
.then(function(data) {
return data;
}, function(data) {});
}

您不返回 promise ,因此 post 将在 httpService.baseGet 请求完成之前解析为 undefined

关于javascript - Angular 注入(inject)解析到 Controller 日志记录未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32983475/

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