我发现在.run方法中进行服务调用存在问题。似乎控制器在继续之前不等待服务解决
.run(['User', 'Translation', function(User, Translation) ... service injection
获取用户:
$rootScope.user = User.get();
根据用户首选语言获取翻译
$rootScope.user.$promise.then(function(user) {
$rootScope.translation = Translation.language(user.user_language.toLowerCase()).then(function(translation) {
$rootScope.translation = translation.data;
});
Do Intercom and other stuff...
});
在控制器中,我们将对象的某些属性设置为
之类的转换$scope.obj = { prop: $scope.translation.prop }
由于语言服务还没有得到解决,我猜测这种情况有10%失败。
Intercom,Segment.io之类的东西的所有初始化都是基于有关用户的信息,所以我们也尝试在.run中解析语言
问题是我该怎么做。似乎是重复的,以解决应用程序中每个状态(ui-router)上的服务。
答案 0 :(得分:0)
您可能希望为所有应用创建一个抽象路由作为根状态,并使用广应用数据解析该路由。如果这导致你在重构时遇到很多麻烦,那么你可能想要查看John Papa课程。
我记得他在上一课程中提到了一个解决方案:
您可以使用Pluralsight试用期免费使用大部分课程。很抱歉没有立即记住解决方案。