首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AngularJS服务($)可用之前,不要执行.run()

在AngularJS服务($)可用之前,不要执行.run()
EN

Stack Overflow用户
提问于 2014-01-15 19:10:28
回答 1查看 120关注 0票数 0

上一个问题的后续部分:Adding a Self-Executing Anonymous Function to extend Sir Trevor in AngularJS whilst accessing $

我运行一些配置代码来扩展Sir Trevor Content Editor,然后为了减少或删除依赖项,我将$translate服务注入到代码中。

代码语言:javascript
复制
   angular.module('myApp', [])
        .run(['$translate', function($translate) {

            // $translate is injected by Angular.

            if (SirTrevor) {
                SirTrevor.Blocks.NewBlock = SirTrevor.Block.extend({
                    // Whatever here... then
                    title: function() {
                        return $translate('some.path.somewhere');
                    }
                });

                SirTrevor.Blocks.AnotherNewBlock = SirTrevor.Block.extend({
                    // Whatever here... then
                    title: function() {
                        return $translate('some.other.path.somewhere');
                    }
                });
            }
        }]);

但是,当部署到我的构建服务器时,构建中断了!罪魁祸首是$translate在我的代码执行时没有准备好或没有提供?我想知道,当$translate服务可用时,是否可以添加某种$watch或函数来执行代码?

任何建议都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2014-01-15 22:36:11

DI将在注入和执行代码之前解析所有依赖项。对于服务,这意味着单例将在注入之前实例化一次(懒惰地)。

如果你的服务在有用之前需要做一些异步的事情,你可能想要返回一个promise并使用.then()来确保所有的事情都被完全解决了。我不确定您使用的是哪种$translate,但像http://pascalprecht.github.io/angular-translate/这样的are会在加载内容时返回promise和广播事件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21135822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档