标题可能没有意义,但基本上我不喜欢拿这样的物体......
[
{
menuItemTitle: 'Edit Page',
checkPermissions: function($http, $timeout){
// Do something which uses $http or $timeout
}
}
]
我有一个菜单指令,需要循环遍历数组,并且需要检查.checkPermissions是否是函数所需的每个项目,如果它是一个函数,那么它需要调用它,并以某种方式获取传入的所有依赖项和允许它们在函数内部使用,就像Angular在创建控制器,工厂,服务等时所做的那样。
我想这个函数还需要在调用它的上下文中运行,这样原始上下文中的其他变量也可以在"这个"对象,例如。
var siteId = 'google.com'
var menu = [
{
menuItemTitle: 'Edit Page',
checkPermissions: function($http, $timeout){
if(siteId === 'google.com'){
$http.get(stuff);
}
}
}
]
我可以在控制器和服务中找到大量关于如何使用DI的文章,但没有关于使用注入器系统来运行这样的传递函数,所以我认为它真的很难?我的JS技能不仅仅是为了理解核心的Angular代码,所以任何帮助都会受到赞赏。
答案 0 :(得分:1)
它应该与Angular和第三方库中用于启用DI的函数$injector.invoke
的方法相同。
它基本上调用checkPermissions
(应该是函数或内联数组注释),其相应的依赖关系为params,可选的参数也可以作为函数的this
上下文提供。
var checkPermissionsResult = $injector.invoke(checkPermissions, this);