继上一个问题之后:Adding a Self-Executing Anonymous Function to extend Sir Trevor in AngularJS whilst accessing $
我运行一些配置代码来扩展Sir Trevor内容编辑器,然后减少或删除我将$ translate服务注入代码的依赖项。
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
没有准备好或可用?我想知道在$watch
服务可用时是否可以添加某种$translate
或函数来执行代码?
非常感谢任何建议。
答案 0 :(得分:0)
DI将在注入和执行代码之前解析所有依赖项。对于服务,这意味着单例将在注入之前(懒惰地)实例化一次。
如果您的服务需要在有用之前做一些异步事情,您可能需要返回一个承诺并使用.then()
来确保一切都完全解决。我不确定你使用的是哪个$translate
,但像http://pascalprecht.github.io/angular-translate/这样的人会返回一个承诺,并在加载内容时广播事件。