首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在访问$时添加一个自动执行的匿名函数以扩展AngularJS中的Trevor爵士

在访问$时添加一个自动执行的匿名函数以扩展AngularJS中的Trevor爵士
EN

Stack Overflow用户
提问于 2014-01-14 11:25:15
回答 1查看 1.9K关注 0票数 0

我有一个用AngularJS编写的应用程序(我对它非常陌生),在我的应用程序中,我使用的是Trevor爵士内容编辑器。我需要扩展Trevor先生的内容编辑器,以包括一些自定义块我已经写了。不过,一切都很好,但是我需要在扩展代码中使用一个角服务(以$为前缀的内容,例如$translate)。

现在,在我的应用程序中,我的Trevor爵士扩展代码仅仅包含在一个具有自动执行匿名功能的文件中。

代码语言:javascript
复制
(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时被覆盖。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-14 12:29:39

你绝对是对的。这纯粹是为了配置,所以它不适合下面的任何组件。

  • 指令,用于DOM操作。
  • 服务,它返回将使用new运算符调用的单例对象。
  • 工厂,它返回一个单例对象。

它也可能在.config()块中工作,但我会使用.run()块。见模块文档

示例

代码语言:javascript
复制
(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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21112358

复制
相关文章

相似问题

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