我有一个用AngularJS编写的应用程序(我对它非常陌生),在我的应用程序中,我使用的是Trevor爵士内容编辑器。我需要扩展Trevor先生的内容编辑器,以包括一些自定义块我已经写了。不过,一切都很好,但是我需要在扩展代码中使用一个角服务(以$为前缀的内容,例如$translate)。
现在,在我的应用程序中,我的Trevor爵士扩展代码仅仅包含在一个具有自动执行匿名功能的文件中。
(function() {
// check SirTrevor exists...
if(SirTrevor){
SirTrevor.Blocks.NewBlock = SirTrevor.Block.extend({
// yadda yadda
})
SirTrevor.Blocks.AnotherNewBlock = SirTrevor.Block.extend({
// blah blah blah
})
}
})()现在,当我尝试把我的角方法作为参数传递给函数时,它不会被识别,因为它不存在。因此,我需要将自动执行的匿名函数放在可以访问角服务的位置。.directive不合适,因为我不希望向HTML中添加标记或属性,而且我只希望执行这段代码一次。代码似乎不适合于.factory,因为我不返回对象,而且我的代码不是单例,所以.service退出了,我不知道在哪里调用/调用它?我应该在哪里或如何执行我的代码,这样我才能访问/注入角服务?
有人有什么想法吗?
顺便说一句:我不能将新代码添加到我的SirTrevor.js中,因为它将在下次更新依赖项或运行bower install时被覆盖。
发布于 2014-01-14 12:29:39
你绝对是对的。这纯粹是为了配置,所以它不适合下面的任何组件。
new运算符调用的单例对象。它也可能在.config()块中工作,但我会使用.run()块。见模块文档。
示例
(function(angular, SirTrevor) {
angular.module('myApp', [])
.run(['$http', function($http) {
// $http is injected by Angular.
if (SirTrevor) {
SirTrevor.Blocks.NewBlock = SirTrevor.Block.extend({
// Whatever here...
});
SirTrevor.Blocks.AnotherNewBlock = SirTrevor.Block.extend({
// Whatever here...
});
}
}]);
})(angular, SirTrevor);https://stackoverflow.com/questions/21112358
复制相似问题