使用ng-init

时间:2017-04-12 07:55:40

标签: javascript angularjs angularjs-directive angularjs-scope

我试图让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

0 个答案:

没有答案