2016-03-07 3 views
1

пытается создать объект Date (используя только время) и доступ к этому значению вне моей функции

Любой помощи будет оценен. Смотрите ниже код или мои plunker

var objts = ""; 

    $scope.today = function() { 

     $http.get('time.json').success(function(data, status, headers, config) { 

     objts = new Date(data.time_start); 
     objte = new Date(data.time_end); 

     console.log(data); 
    }).error(function(data, status, headers, config) { 
     console.log("No data found.."); 
    }); 

    $scope.dt = objts; // ---- Trying to use value of objts here ---- 

    }; 
    $scope.today(); 

Благодаря

+0

вы только получите асинхронный вызов отклик в их обратных вызовах .. –

ответ

2

Метод get исполняется asynchronously. В настоящее время вы устанавливаете значение $scope.dt вне функции разрешения обещания get.

Вы должны установить переменную $scope.dt когда get обещание решительность:

$scope.dt = null; 

$scope.today = function() { 
    $http.get('time.json').success(function(data) { 
    var objts = new Date(data.time_start); 
    var objte = new Date(data.time_end); 
    $scope.dt = objts; 
    console.log(data); 
    }).error(function(data) { 
    console.log("No data found.."); 
    }); 
}; 
$scope.today(); 

Редактировать
Ваша проблема на самом деле происходит от того, как вы создаете свою дату. Вы должны сделать что-то вроде:

$scope.dt = Date.parse("2016-01-01 " + data.time_start); 

См Dates documentation или moment.js и forked Plnkr

+0

Хорошо, что имеет смысл, но я получить текущее время (а не 08:00:00, значение в моем json я хочу), когда я это делаю. Мой плукер был обновлен, чтобы показать, что я имею в виду. – user3489502

+0

Проблема заключается в создании вашей даты. Вы должны сделать что-то вроде 'Date.parse (« 2016-01-01 »+ data.time_start);' – cl3m

+0

Супер спасибо, это сработало – user3489502