页面根本没有加载。我试图解决HTTP服务问题。
我的工厂:
app.factory("search", function($q, $http, $cookieStore){
return {
getMessage: function(){
//return $q.when("Response");
console.log("Cookie --> ".$cookieStore.get("sId"));
var promise = $http.post('tpl/processors/process-contacts.php', {sid : $cookieStore.get("sId")}).then(function(response) {
return response.data;
});
return promise;
}
}
});
我所处理的状态:
.state('app.mail.compose', {
url: '/compose',
templateUrl: 'tpl/mail_new.php',
reloadOnSearch: true,
resolve: {
searchVal: ['search', function (search) {
return search.getMessage(); // not then
}]
}
})
我的控制器:
app.controller('SmsNewCtrl', ['$scope','$http','$cookieStore','$stateParams','searchVal', function($scope, $http, $cookieStore,$stateParams,searchVal,transformRequestAsFormPost) {
$scope.sId = $cookieStore.get("sId");
//console.log("Inbox Type : "+ $stateParams.inboxType );
console.log("Cookie Call inside SmsNewCtrl: ",$cookieStore.get("sId"));
$scope.contacts = searchVal;
console.log("Contacts from Search Factory :" + $scope.contacts);
$scope.mail = {
to: '',
content: ''
}
}]);
早些时候我曾经在我的控制器内进行http调用。直到然后一切正常,但页面首先加载,然后数据来了。所以我想通过在控制器外部进行http调用来解析数据。我是Angular的新手并且还在学习,如果我的方法有问题,请告诉我,或者让我知道在控制器外部进行http发布的最佳方法并解决。
答案 0 :(得分:0)
您需要致电deferred.resolve(data)
:
var deferred = $q.defer();
var promise = $http.post('tpl/processors/process-contacts.php', {sid : $cookieStore.get("sId")}).then(function(response) {
deferred.resolve(response);
});
return deferred.promise;
然后在你的控制器中:
var promise = search.getMessage();
promise.then(function(data) {
// do stuff
}, function() {
console.log('An error occurred while processing the request.');
});
答案 1 :(得分:0)
我写了一个正在运行的快速示例: http://jsbin.com/nuzaqugofu/1/edit?html,js,console
按照我的方式尝试并继续添加越来越多的代码,直到它不再起作用。然后你就会知道是什么导致了这个问题。