首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular可重用函数

Angular可重用函数
EN

Stack Overflow用户
提问于 2013-02-13 19:53:46
回答 2查看 5.8K关注 0票数 3

我有几个指令,在做完它们的事情后需要调用相同的函数。此函数需要访问主控制器作用域,但还需要修改DOM。这个函数应该如何声明,应该在哪里声明?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-14 01:36:31

你应该使用服务,服务可以访问$rootScope,尽管最好将DOM修改保持在指令级,但在某些情况下,你可以这样做。

代码语言:javascript
运行
复制
angular.module("myModule", [])
.factory("MyService", function ($rootScope) {
    return {
        myFunction: function () { // do stuff here }
    }
})
.directive("MyDirective", function (MyService) {
    return {
        link: function (scope, iElement, iAttrs) {
            // try do keep dom modification here, you have access to MyService,
            // let it do the algorithm and try to keep dom modification here.
            // PS: you can also inject $rootScope to directives.
        };
    };
});
票数 7
EN

Stack Overflow用户

发布于 2013-02-13 20:58:59

如果此函数需要访问Controller的作用域,我将使用指令中可访问的作用域,并将其作为param传递,如下所示:

代码语言:javascript
运行
复制
var MyDirective = function() {
    var linkFn = function(scope, element, attrs) { 
        callAwesomeFn(scope);
    };

    return {
        link: linkFn
    }
};

现在,把它放在哪里呢?

如果这是实用程序函数,我会放入一些实用程序名称空间,如MyFunctions.callAwesomeFn()

  • if这是一个组件,需要与角度使用依赖注入管理的其他对象进行交互,并将其注入到指令中
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14852963

复制
相关文章

相似问题

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