Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了AngularJS – 按字符串获取控制器功能大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Ng-include指令,该指令将具有基于范围中的一些变量的动态模板和控制器.目前我有这样的地图.

$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.以下命令返回控制器对象,但我需要返回函数.

var ctrlObj = angular.module('modulename').controller('ControllerName')

编辑1

澄清:

基本上我会在一个页面上设置“子控制器”,以便它可以是常规配置.主控制器具有所有子控制器将共享的信息:FooCtrl将是’主’控制器,而FooBarCtrl,FooBarSubCtrl将是子控制器.我的目标是创建一个将“Bar”解析为“FooBarCtrl”的函数,并从中获取相应的控制器函数.

解决方法

我没有看到实现这一目标的任何微不足道的方法,但我可以想象两种可能的解决方案:

>修改ngInclude指令,使其获取src表达式,解析它以获取控制器名称(模板Foo.html =>控制器FooCtrl)并在元素上设置控制器,就像在NgView(https://github.com/angular/angular.js/blob/master/src/ng/directive/ngView.js#L149)中完成一样:

controller = $controller(current.controller,{$scope: lastScopE});
element.contents().data('$ngControllerController',controller);

>创建新指令,例如“ajpaz-controller”监视src表达式并以与第1点相同的方式将控制器链接到元素.显而易见的优点是可以在不修改原始ng-include的情况下完成.它会像这样工作

<div ng-include src="templateUrl" ajpaz-controller>

因此,您只需将当前的templateUrl保留在父控制器中.希望有意义;)

@H_673_40@

大佬总结

以上是大佬教程为你收集整理的AngularJS – 按字符串获取控制器功能全部内容,希望文章能够帮你解决AngularJS – 按字符串获取控制器功能所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。