使用ui.router,我们有一个状态控制器:
controller('widget', function($repository, $stateParams){
$scope.widget = $repository.get($stateParams.id);
})
注册于:
.state('widget',
controller: 'widget',
template: '/widgetTemplate.html'
我们遇到了一种情况,我们希望将此控制器作为模板的一部分重复使用:
<div ng-controller="widget" ng-include="/widgetTemplate.html"></div>
但是似乎没有一种简单的方法来注入带有正确ID的模拟$ stateParams对象。就像是:
<div ng-controller="widget" ng-inject="{$stateParams: {id: 1234}}" ng-include="/widgetTemplate.html"></div>
除了编写增强ng-controller的自定义指令或重构我们的代码以利用继承的作用域之外,还有没有现成的方法可以做到这一点?
我不认为有开箱即用的方法。ng-controller
仅使用常规控制器实例化,就没有机会注入任何东西。
但这是一个有趣的“功能”,实际上,可以使用自定义指令相对简单地对其进行构建。
这是一个说明性的示例( 免责声明 :绝对不会在晦涩的场景下进行测试):
.directive("ngInject", function($parse, $interpolate, $controller, $compile) {
return {
terminal: true,
transclude: true,
priority: 510,
link: function(scope, element, attrs, ctrls, transclude) {
if (!attrs.ngController) {
element.removeAttr("ng-inject");
$compile(element)(scope);
return;
}
var controllerName = attrs.ngController;
var newScope = scope.$new(false);
var locals = $parse(attrs.ngInject)(scope);
locals.$scope = newScope;
var controller = $controller(controllerName, locals);
element.data("ngControllerController", controller);
element.removeAttr("ng-inject").removeAttr("ng-controller");
$compile(element)(newScope);
transclude(newScope, function(clone){
element.append(clone);
});
// restore to hide tracks
element.attr("ng-controller", controllerName);
}
};
});
用法如您所描述:
<div ng-controller="MainCtrl">
{{name}}
<div ng-controller="SecondCtrl" ng-inject="{foo: name, bar: 'bar'}">
</div>
</div>
而且,当然,控制器可以注入以下变量:
.controller("SecondCtrl", function($scope, foo, bar){
});
矮人
本文向大家介绍asp.net-core 将依赖项注入Controller Action,包括了asp.net-core 将依赖项注入Controller Action的使用技巧和注意事项,需要的朋友参考一下 示例 鲜为人知的内置功能是使用的Controller Action注入FromServicesAttribute。 重要说明是,[FromServices] 不能将其用作常规的“属性注入”或“
问题内容: Spring在以下方面很好地支持JUnit:使用和注释,事情看起来非常直观 该测试将能够在Eclipse&Maven中正确运行。我想知道TestNG是否有类似的东西。我正在考虑迁移到“下一代”框架,但没有找到与Spring测试匹配的对象。 问题答案: 它也可以与TestNG一起使用。
在React中,想做依赖注入(Dependency Injection)其实相当简单。请看下面这个例子: // Title.jsx export default function Title(props) { return <h1>{ props.title }</h1>; } // Header.jsx import Title from './Title.jsx'; export defa
依赖注入 Dependency Injection is a strong mechanism, which helps us easily manage dependencies of our classes. It is very popular pattern in strongly typed languages like C# and Java. 依赖注入是一个很强大的机制,该机制可以帮
简介 Hyperf 默认采用 hyperf/di 作为框架的依赖注入管理容器,尽管从设计上我们允许您更换其它的依赖注入管理容器,但我们强烈不建议您更换该组件。 hyperf/di 是一个强大的用于管理类的依赖关系并完成自动注入的组件,与传统依赖注入容器的区别在于更符合长生命周期的应用使用、提供了 注解及注解注入 的支持、提供了无比强大的 AOP 面向切面编程 能力,这些能力及易用性作为 Hyper
出自维基百科 Wikipedia: 依赖注入是一种允许我们从硬编码的依赖中解耦出来,从而在运行时或者编译时能够修改的软件设计模式。 这句解释让依赖注入的概念听起来比它实际要复杂很多。依赖注入通过构造注入,函数调用或者属性的设置来提供组件的依赖关系。就是这么简单。