Angular在控制器日志中注入resolve未定义
angular injecting resolve into controller logging undefined
我有以下解析:
.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);
}
我的控制器是这样的
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
}
我得到一个未定义的"post",当我试图从解析注入的帖子。我试着在getSinglePostWrapper
函数中记录帖子,它记录了正确的对象。我似乎失去了一些绑定或从解析到控制器的东西。
文章服务
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) {});
}
}
httpservice
因为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注入到我声明flapperNews模块的第一个地方。
供参考-一切都在工作。其他http请求也可以。这个也很好。它只是不把post注入控制器
承诺链在这里断裂。
function getSinglePost(postId) {
httpService.baseGet('/posts/' + postId)
.then(function(data) {
return data;
}, function(data) {});
}
您没有返回承诺,因此post
将在httpService.baseGet
请求完成之前解析为undefined
。
try this:
.state('posts', {
url: '/posts/{id}',
templateUrl: 'posts.html',
controller: 'postsController as postsCtrl',
resolve: {
post: function('postsService', '$stateParams') {
return postsService.getSinglePost($stateParams.id);
}
})
angular.module('flapperNews')
.controller('postsController', function($scope, post){
$scope.post = post;
console.log($scope.post); //undefined here
});
相关文章:
- 使用Objective-C的JavaScript注入方法
- 正在注入包含JS的HTML
- 迷你$provider注入茉莉花和角
- Angularjs工厂注入错误
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 如何在Ionic Android中将Javascript注入到web视图中
- Android Webview通过Javascript注入CSS
- Meteor:在启动时将html注入客户端文件
- 注入工厂时,Angular停止工作
- 注入Javascript以选择具有指定值的所有单选按钮
- XSS通过地址栏注入
- 注入angularjs指令
- Ember服务在注入组件并在计算属性中使用后是未定义的
- AngularJS依赖注入定时问题
- 如何通过铬扩展注入反应元素
- 如何防止在客户端/服务器两侧对文本框进行sql注入
- Ionic将firebase注入工厂,同时将控制器和服务保存在不同的文件中
- Angular在控制器日志中注入resolve未定义
- Angular UI-Router最小化错误-如何将Resolve语法改为基于字符串注入
- AngularJS: resolve中的var不会被注入到控制器(未知的提供商)