上一个问题的后续部分:Adding a Self-Executing Anonymous Function to extend Sir Trevor in AngularJS whilst accessing $
我运行一些配置代码来扩展Sir Trevor Content Editor,然后为了减少或删除依赖项,我将$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在我的代码执行时没有准备好或没有提供?我想知道,当$translate服务可用时,是否可以添加某种$watch或函数来执行代码?
任何建议都是非常感谢的。
发布于 2014-01-15 22:36:11
DI将在注入和执行代码之前解析所有依赖项。对于服务,这意味着单例将在注入之前实例化一次(懒惰地)。
如果你的服务在有用之前需要做一些异步的事情,你可能想要返回一个promise并使用.then()来确保所有的事情都被完全解决了。我不确定您使用的是哪种$translate,但像http://pascalprecht.github.io/angular-translate/这样的are会在加载内容时返回promise和广播事件。
https://stackoverflow.com/questions/21135822
复制相似问题