解决app.run中的服务,错误的逻辑?

时间:2014-10-24 07:05:47

标签: javascript angularjs

我发现在.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)上的服务。

1 个答案:

答案 0 :(得分:0)

您可能希望为所有应用创建一个抽象路由作为根状态,并使用广应用数据解析该路由。如果这导致你在重构时遇到很多麻烦,那么你可能想要查看John Papa课程。

我记得他在上一课程中提到了一个解决方案:

angularjs-patterns-clean-code

您可以使用Pluralsight试用期免费使用大部分课程。很抱歉没有立即记住解决方案。