Javascript 使用ng init将参数传递给动态控制器
我正在尝试让ng init使用自定义动态控制器指令。 我想,问题是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
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。德克萨斯州