0

実行時に変数の $scope.reserved を使用できないのはなぜですか? テンプレートの {{reserved}} は ок ですが、コントローラーの値は未定義です。

次のコードがあります

サービス:

'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 ....
}
4

2 に答える 2

0

「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 ....
    }
于 2014-09-13T07:09:45.867 に答える
0

課題を見逃していると思いますか?

 api.getReservedHours(masters,  '2007/08/27').then(function(response) {
                    $scope.reserved = response.data;
        });
于 2014-09-12T18:00:50.123 に答える