为什么我得到带有服务angularjs的$$状态变量
我只想从控制器中获取变量中的服务,但它会给我一个$$状态对象 这是我的控制器为什么我得到带有服务angularjs的$$状态变量,angularjs,Angularjs,我只想从控制器中获取变量中的服务,但它会给我一个$$状态对象 这是我的控制器 $scope.myDataSMS = ServiceSms.async().then(function(data){ $scope.myDataSMS1 = data; console.log($scope.myDataSMS1); return $scope.myDataSMS1; }); console.log($scope.myDataSMS); 和我的服务 routeAppCont
$scope.myDataSMS = ServiceSms.async().then(function(data){
$scope.myDataSMS1 = data;
console.log($scope.myDataSMS1);
return $scope.myDataSMS1;
});
console.log($scope.myDataSMS);
和我的服务
routeAppControllers.factory('ServiceSms', function($http,Token) {
var key = Token.CreateToken()
var myService = {
async: function() {
var data = 'token=' + encodeURIComponent(key);
var promise = $http({
method: 'POST',
url: 'PhpFunction/getsms.php',
data: data,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
.then(function(data) {
// The then function here is an opportunity to modify the response
// console.log(data.data);
// The return value gets picked up by the then in the controller.
return data.data;
})
// Return the promise to the controller
return promise;
}
};
return myService;
});
我认为问题在于承诺,但我有点被卡住了
如果有人能帮助我,请
提前感谢这将是写下您的承诺的更好方式: 控制器:
.controller('nameofcontroller', ['$scope', 'ServiceSms', function($scope, ServiceSms) {
$scope.myDataSMS = ServiceSms.async()
.then(
function(data){
$scope.myDataSMS1 = data;
console.log($scope.myDataSMS1);
return $scope.myDataSMS1;
},
function(err){
console.log('err: ' + err);
});
}]);
routeAppControllers.factory('ServiceSms', function($http,Token) {
return {
async: function() {
var data = 'token=' + encodeURIComponent(key);
return $http({
method: 'POST',
url: 'PhpFunction/getsms.php',
data: data,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
}
}
});
服务:
.controller('nameofcontroller', ['$scope', 'ServiceSms', function($scope, ServiceSms) {
$scope.myDataSMS = ServiceSms.async()
.then(
function(data){
$scope.myDataSMS1 = data;
console.log($scope.myDataSMS1);
return $scope.myDataSMS1;
},
function(err){
console.log('err: ' + err);
});
}]);
routeAppControllers.factory('ServiceSms', function($http,Token) {
return {
async: function() {
var data = 'token=' + encodeURIComponent(key);
return $http({
method: 'POST',
url: 'PhpFunction/getsms.php',
data: data,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
}
}
});
感谢您的回复,但它给了我一个承诺,如何获得我的这一承诺的元素{:“待定”}您仍然需要在控制器中使用
.then()
执行承诺。也许您没有将范围变量设置为正确的对象。可以尝试$scope.myDataSMS1=data.data
@Gazano请说得更清楚些,如果可以的话,也请提供一个提琴或您要返回的错误。@estus您是对的,在这种情况下,返回承诺是多余的,因为$http已经返回了一个承诺。检查编辑,它现在应该是好的。接得好!是的,现在看起来不错。我不确定我是否正确理解了这个问题,但可能$scope.myDataSMS根本不应该分配给promise。OP似乎希望将其分配给结果,但这不会发生。关于“$$state对象”在哪里,问题还不够清楚。首先,我确定它不会给您$$state对象。它给您一个包含$$state属性的对象(promise)。当然,console.log($scope.myDataSMS)
将输出一个承诺。因为myDataSMS是一个承诺。myDataSMS1是最有希望的结果。