Я пытаюсь использовать разрешение метеоритов js ui-router для загрузки информации одного пользователя, выбранного из списка пользователей.Ошибка сбора метеоров в решении ui-router
$stateProvider
.state('userprofile', {
url: '/user/:userId',
cache: false,
template: '<user-profile userinfo="$resolve.userinfo"></user-profile>',
controller: UserProfile,
controllerAs: name,
resolve: {
userinfo: function($stateParams) {
viewedUser = Meteor.users.findOne({
_id: $stateParams.userId
});
return viewedUser;
},
}
});
Проблема в том, что в первый раз после списка пользователей профиль пользователя отображается правильно. Однако перезагрузка страницы делает userinfo неопределенным. Я гость, что со второго раза контроллер уже загружен, чтобы он отображался до разрешения?
После поиска некоторое время, я попытался $ Q и $ таймаут
resolve: {
userinfo: function($stateParams, $q, $timeout) {
deferred = $q.defer();
$timeout(function() {
deferred.resolve(Meteor.users.findOne({
_id: $stateParams.userId
}));
}, 1000);
return deferred.promise;
},
}
Он работает, как я ожидал, профиль отображается каждый раз, когда я обновите страницу. Но если я опускаю задержку до 500, она возвращается к неопределенной при обновлении. Я не уверен, почему в этом случае работает более длинная задержка?
Спасибо!