【发布时间】:2015-07-15 12:19:42
【问题描述】:
作为标题,我想使用一个工厂 insisde 一个“解决” app.js:
angular
.module("goHenry", ["ui.router"])
.factory("httpPost", httpPost)
.controller("MainCTRL", ["$scope", MainCTRL]);
function MainCTRL($scope, httpPost){
this.nameApp = "CiaoMiao";
console.log($scope.children, httpPost);
}
function httpPost($http, $q){
return {
get: function() {
var deferred = $q.defer();
$http.post.apply(null, arguments)
.success(deferred.resolve)
.error(deferred.resolve);
return deferred.promise;
}
}//RETURN
}
routers.js:
var httpConfig = {headers:{ "Content-Type" : "application/x-www-form-urlencoded" }};
var config = ["$urlRouterProvider", "$stateProvider", function($urlRouterProvider, $stateProvider){
$urlRouterProvider.otherwise("/");
$stateProvider
.state("multi",{
url: "/multi",
"viewA@multi": {
templateUrl: "app/templates/login.htm",
controller: ["$scope", "getChildrenNumber", function($scope, getChildrenNumber){
this.nameApp = "nameAppChanged";
this.gatto = "Miao";
}],
controllerAs: "ctrl"
}
},
resolve: {
getChildrenNumber: ["$http", function($http, httpPost){
var httpP = httpPost.get("http://domain.com/user/login/api-login", $.param({ username:"ciaociao6@ciao.com", password:"ciaociA0" }), httpConfig)
console.log(httpP);
return "Some response from an API";
}]
}
});
angular
.module("CiaoMiao")
.config(config);
由于 console.log 我得到“未定义”,我不知道如何在这部分代码中注入该工厂。 我尝试将其放入该视图的主控制器,但效果不佳。
【问题讨论】:
-
能否将 DI 数组更正为 getChildrenNumber: ["$http","httpPost", function($http, httpPost){
-
$http 已经返回了一个承诺,因此使用
$q是多余的。也不需要在解析函数中注入 $http 。是否正在提出请求?检查浏览器开发工具网络 -
你说的不是真的,我需要注入$http服务
标签: angularjs angularjs-routing