Angularjs 为什么在运行时变量的$scope.value不可用?
为什么在运行时变量的$scope.reserved不可用?在模板中{reserved}}是ofκ,但在控制器中value=undefibed 我有以下代码 服务:Angularjs 为什么在运行时变量的$scope.value不可用?,angularjs,angularjs-scope,angularjs-service,angularjs-http,Angularjs,Angularjs Scope,Angularjs Service,Angularjs Http,为什么在运行时变量的$scope.reserved不可用?在模板中{reserved}}是ofκ,但在控制器中value=undefibed 我有以下代码 服务: 'use sctict' angular.module('starter.services', []) .service('api', ['$http', '$q', function api($http, $q) { var server = 'http://localhost/ires-api';
'use sctict'
angular.module('starter.services', [])
.service('api', ['$http', '$q', function api($http, $q) {
var server = 'http://localhost/ires-api';
var jsondata = {
getReservedHours: function (masters, date) {
var deferred = $q.defer();
var promise = $http({ method: 'GET', url: server + '/reservations/' + masters + '/' + date, cache:true})
.success(function(response) {
//return response;
deferred.resolve({
data: response
});
}).error(function(msg, code) {
deferred.reject(msg);
$log.error(msg, code);
});
return deferred.promise;
},
}
return jsondata;
}]);
控制器
$scope.click = function(){
masters = [5,51];
api.getReservedHours(masters, '2007/08/27').then(function(response) {
$scope.reserved = response.data;
});
console.log($scope.reserved); // undefined ....
}
我想你错过了任务
api.getReservedHours(masters, '2007/08/27').then(function(response) {
$scope.reserved = response.data;
});
因为“getReservedHours”是一个异步请求,而$scope.reserved在打印时未定义(因为请求未完成)。请改用此代码
$scope.click = function(){
masters = [5,51];
api.getReservedHours(masters, '2007/08/27').then(function(response) {
$scope.reserved = response.data;
console.log($scope.reserved); // This would work
});
console.log($scope.reserved); // undefined ....
}
在显示的代码中,只有当您尝试登录时,
$scope.reserved
才会出现。您还试图在promise回调之外记录它,而AJAX请求尚未完成,因此我尝试使用promise。我想在这种情况下它会起作用?想什么会起作用?