我正在使用 ng-include
指令将具有基于范围内某些变量的动态模板和 Controller 。目前我有一张这样的 map 。
$scope.map = {
'key1': {
controller: Ctrl1,
templateUrl: 'tmpl1.html'
},
'key12': {
controller: Ctrl2,
templateUrl: 'tmpl1.html'
}
}
...
<div ng-include src="map[key].templateUrl" ng-controller="map[key].controller"></div>
但是,我想丢弃此映射,而是通过字符串生成 templateUrl 和 Controller 。以下返回 Controller 对象,但我需要返回该函数。
var ctrlObj = angular.module('moduleName').controller('ControllerName')
编辑 1
澄清:
However, I would like to discard this map and instead generate the templateUrl and controller via a string
基本上我会以某种方式在页面上设置“子 Controller ”,以便它成为配置的约定。具有所有子 Controller 将共享的信息的主 Controller :FooCtrl 将是“主” Controller ,而 FooBarCtrl、FooBarSubCtrl 将是子 Controller 。我的目标是制作一个将“Bar”解析为“FooBarCtrl”的函数,并从中获取适当的 Controller 函数。
最佳答案
我没有看到任何实现这一点的微不足道的方法,但是我可以想象两个潜在的解决方案:
controller = $controller(current.controller, {$scope: lastScope});
element.contents().data('$ngControllerController', controller);
<div ng-include src="templateUrl" ajpaz-controller>
所以你只需要在你的父 Controller 中保留当前的 templateUrl。希望这是有道理的;)
关于AngularJS - 通过字符串获取 Controller 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13707693/