繁体   English   中英

我可以将一个函数传递给另一个函数吗?

[英]Can I pass a function to another function the call that function with dependencies?

标题可能没有意义,但基本上我不喜欢这样的对象...

[
    {
        menuItemTitle: 'Edit Page',
        checkPermissions: function($http, $timeout){

            // Do something which uses $http or $timeout

        }
    }
]

我有一个菜单指令,它需要遍历数组,并且对于每个项目,它都需要检查.checkPermissions是否是一个函数,如果它是一个函数,则需要调用它,并以某种方式获取所有依赖关系并允许它们可以在函数内部使用,就像Angular在创建控制器,工厂,服务等时一样。

我猜该函数还需要在调用它的上下文中运行,以便原始上下文中的其他变量也可以在“ this”对象上使用,例如

var siteId = 'google.com'

var menu = [
    {
        menuItemTitle: 'Edit Page',
        checkPermissions: function($http, $timeout){

            if(siteId === 'google.com'){
                $http.get(stuff);
            }

        }
    }
]

我可以找到大量有关如何在控制器和服务中使用DI的文章,却找不到与自己使用喷油器系统来运行这样传递的函数的文章,所以我认为这真的很难吗? 我的JS技能并不能帮助您理解Angular的核心代码,因此,我们将不胜感激。

它应该使用与Angular和第三方库中用于启用DI的函数$injector.invoke

它基本上调用checkPermissions (应该是函数或内联数组批注),并将各自的依赖关系作为参数,也可以提供可选参数作为this函数的上下文。

var checkPermissionsResult = $injector.invoke(checkPermissions, this);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM