首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >覆盖指令中注入的服务

覆盖指令中注入的服务
EN

Stack Overflow用户
提问于 2015-01-19 23:13:17
回答 1查看 107关注 0票数 1

更准确地说,我并不是要在测试环境中这样做。

使用$controller服务可以对控制器进行初始化,为其提供自定义注入服务,例如:

代码语言:javascript
运行
复制
var controllerImpl = ['$stateParams', function($stateParams) {
    console.log($stateParams)
}];

$controller(controllerImpl, {
    $stateParams: {foo: 'bar'}
})

在这种情况下,controllerImpl会将$stateParams读取为{foo: 'bar'} $stateParams服务。

我想用一个指令做同样的事情,使用$compile服务(也许),但我没有找到任何方法来将本地变量传递给那个服务。

EN

回答 1

Stack Overflow用户

发布于 2015-01-19 23:56:29

您可以直接使用$injector来实例化对象,但我不能100%确定您打算如何使用它。

invokeinstantiate都允许您通过提供locals对象来覆盖服务。

代码语言:javascript
运行
复制
function myService(dep1, dep2){ ... }

$injector.invoke(
  myService,
  this, //optional 'this' param
  {
     dep1: someCustomDependency 
  }
);

//instantiate assumes this is a
// constructor function
$injector.instantiate(
  myService,
  {
     dep1: someCustomDependency 
  }
);

从理论上讲,你可以使用这种技术创建一个新的指令实例,然后手动调用它的链接函数与一个元素和一个新的作用域,但这似乎不是一个好主意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28027774

复制
相关文章

相似问题

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