标题可能没有意义,但基本上我不喜欢这样的对象...
[
{
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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句