2015-01-23 4 views
1

Недавно я играю с MeanJS, и у меня возникла проблема, в которой я не очень разбираюсь, поэтому я надеюсь, что кто-то может помочь здесь.Получение значения от обещания AngularJS в MeanJS

У меня есть угловой контроллер, который устанавливает его объем, как это:

// Find existing Topic 
$scope.findOne = function() { 
    $scope.topic = Topics.get({ 
     topicId: $stateParams.topicId 
    }); 
}; 

Я это устанавливает в $scopetopic. Однако мне также нужно получить значение от topic. Предположим, что это такая дата, как createdAt. Мне нужно получить это значение, а затем выполнить еще одну операцию, чтобы установить другое значение области. Проблема в том, что объект $scope.topic является Угловым обещанием. Как я могу получить значение createdAt (которое является датой) с этого обещания?

ответ

2

Вы можете использовать функцию обратного вызова.

$scope.findOne = function() { 
    $scope.topic = Topics.get({ 
     topicId: $stateParams.topicId 
    }); 
    $scope.topic.$promise.then(function(data) { 
     // access data.createdAt here 
    }); 
}; 

Его фактическое также зависит от того, где вы хотите использовать это. Так что если вы хотите использовать это в целях, вы можете написать непосредственно как:

<span> Created at: {{topic.createdAt}}</span> 

Угловая будет обновляться автоматически, что переменная сфера при загрузке данных.

+0

Я пробовал эту точную вещь, и я получаю 'TypeError: undefined не функция ', но когда я смотрю на нее в отладчике инструментов Chrome dev, переменная' $ scope.topic' - это свойство Promise, разрешенное с ложью. –

+0

О, извините, моя вина. Я пропустил одну вещь: всякий раз, когда вы используете модель ресурсов, она фактически не дает вам обетованного объекта, но возвращает объект, который содержит '$ prom'. Поэтому вам нужно добавить обратный вызов для этого объекта. Я обновил ответ. Проверьте это. –

+0

Ты мужчина. Вот так! Спасибо! –

Смежные вопросы