我试图让ng-init使用自定义动态控制器指令。 我想问题是,ng-init无法识别所关注的控制器。
MainController
var vm = this;
vm.widgets = [{
template: "path/to/file/OneWidget.html,
controller: "OneWidgetController as vm"
}];
的test.html
<div ng-repeat="widget in vm.widgets">
<div layout="column" flex="100"
ng-include="widget.model.template"
ms-dynamic-ctrl="widget.model.controller"
ng-init="vm.init('whatever','hodor')"></div>
</div>
OneWidgetController
function OneWidgetController() {
var vm = this;
vm.init = function(param1, param2)
{
console.log(param1);
};
}
MS-动态-CTRL
function msDynamicCtrl($controller)
{
return {
restrict : 'A',
scope : true,
link : function(scope, element, attrs) {
var locals = {
$scope : scope,
$element : element,
$attrs : attrs
};
element.data('$Controller', $controller(scope.$eval(attrs.msDynamicCtrl), locals));
}
};
}
我的所有控制器都以字符串形式存储在数组中,如下所示&#34; OneWidgetController as vm&#34;这是有效的。我通过与每个视图关联的控制器使模板加载正常。现在我需要用一些参数初始化每个控制器。
有关如何使用ng-init将参数传递给每个控制器的想法吗?
更新:这是一个试图重现我的问题的傻瓜。 https://plnkr.co/edit/FxVVMUzrcpPAG2n2UndM?p=preview