Javascript 使用ng init将参数传递给动态控制器

Javascript 使用ng init将参数传递给动态控制器,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我正在尝试让ng init使用自定义动态控制器指令。 我想,问题是ng init无法识别相关的控制器 主控制器 var vm = this; vm.widgets = [{ template: "path/to/file/OneWidget.html, controller: "OneWidgetController as vm" }]; function OneWidgetController() { var vm = this; vm.init = functio

我正在尝试让ng init使用自定义动态控制器指令。 我想,问题是ng init无法识别相关的控制器

主控制器

var vm = this;
vm.widgets = [{
  template: "path/to/file/OneWidget.html,
  controller: "OneWidgetController as vm"
}];
function OneWidgetController() {
    var vm = this;

    vm.init = function(param1, param2)
    {
        console.log(param1);
    };
}
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>
ms动态控制

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));
        }
    };
}
我的所有控制器都以字符串形式存储在一个数组中,如下所示“OneWidgetController as vm”,这是可行的。我可以通过与每个视图关联的控制器很好地加载模板。现在我需要用一些参数初始化每个控制器

有没有想过如何使用ng init将参数传递给每个控制器

更新:这里有一个plunkr试图重现我的问题。

你能创建一个提琴/plunker吗?试着改用ng controller=“vm as widget.model.controller”。只需在widget.model.controller model中声明控制器名称,我就知道了。最后,我创建了另一个指令来提取每个项目的数据并将其保存到服务中。然后,每个控制器通过调用服务加载正确的数据。即使我有多个具有相同唯一控制器的项,每个项都会获得它们的适当数据,这样我就可以使用不同的引用(例如api调用)构建小部件。如果需要,可以更新plunkr。德克萨斯州