我有一个服务正在向后端发出AJAX请求
服务:
function GetCompaniesService(options)
{
this.url = '/company';
this.Companies = undefined;
this.CompaniesPromise = $http.get(this.url);
}
Run Code Online (Sandbox Code Playgroud)
控制器:
var CompaniesOb = new GetCompanies();
CompaniesOb.CompaniesPromise.then(function(data){
$scope.Companies = data;
});
Run Code Online (Sandbox Code Playgroud)
我希望我的服务能够处理".then"函数,而不必在我的控制器中处理它,并且我希望能够让我的控制器在服务中的承诺解决之后对服务中的数据进行操作.
基本上,我希望能够像这样访问数据:
var CompaniesOb = new GetCompanies();
$scope.Companies = CompaniesOb.Companies;
Run Code Online (Sandbox Code Playgroud)
随着承诺的解决在服务本身内部处理.
这可能吗?或者是我能够访问该承诺的唯一方法是解决方案来自服务外部吗?
由于AngularJS中的success()和error()函数已弃用,我正在更新我的代码,将其替换为then().现在根据我的理解,这两段代码的行为应该相同:
$http
.get(/* some params */)
.success(function() {
// success cases here
})
.error(function() {
// error cases here
});
Run Code Online (Sandbox Code Playgroud)
和
$http
.get(/* some params */)
.then(function() {
// success cases here
}, function() {
// error cases here
});
Run Code Online (Sandbox Code Playgroud)
但在某些情况下,我会得到不同的行为.你能否向我解释为什么会发生这种情况,更重要的是,保证使用then()函数的相同行为的方法是什么?
我一直在尝试使用Angular JS进行搜索但是我得到了这个奇怪的错误:TypeError:undefined不是一个函数而且它在.success上
这是我的代码:
<html ng-app="app">
<head>
<meta charset="utf-8">
<script src="angular.js"></script>
<script>
var app = angular.module('app', []);
app.controller('ctrl', function ($scope, $http){
$scope.url = 'fetch.php';
$scope.search = '';
$scope.postLink = function(){
$http.post($scope.url, { "data" : $scope.search}).succes(function(data, status){
console.log(data);
}).error(function(data, status) {
$scope.data = data || "Request failed";
$scope.status = status;
});
}
});
</script>
</head>
<body ng-controller="ctrl">
<input type="text" ng-model="search">
<input type="submit" ng-click="postLink()">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我为什么它会在.succes上给我一个错误?我不允许在那里打电话吗?
提前致谢!
$scope.tempObject = {};
$http({
method: 'GET',
url: '/myRestUrl'
}).then(function successCallback(response) {
$scope.tempObject = response
console.log("Temp Object in successCallback ", $scope.tempObject);
}, function errorCallback(response) {
});
console.log("Temp Object outside $http ", $scope.tempObject);
Run Code Online (Sandbox Code Playgroud)
我得到响应successCallback,但没有得到$scope.tempObject外界$http。它的显示undefined。
如何访问response或$scope.tempObject之后$http