当前位置: 首页 > 面试题库 >

动态NG控制器名称

长孙逸仙
2023-03-14
问题内容

我想基于我们加载的配置动态指定一个控制器。像这样:

<div ng-controller="{{config.controllerNameString}}>
    ...
</div>

我该怎么做呢?我以为这很容易,但是我似乎可以找到一种方法。


问题答案:

您想要做的是在调用其他指令之前先运行另一个指令,从某个模型获取控制器名称ng-controller,然后删除新指令并添加指令,然后重新编译元素。

看起来像这样:

global.directive('dynamicCtrl', ['$compile', '$parse',function($compile, $parse) {
  return {
    restrict: 'A',
    terminal: true,
    priority: 100000,
    link: function(scope, elem) {
      var name = $parse(elem.attr('dynamic-ctrl'))(scope);
      elem.removeAttr('dynamic-ctrl');
      elem.attr('ng-controller', name);
      $compile(elem)(scope);
    }
  };
}]);

然后,您可以在模板中使用它,如下所示:

<div dynamic-ctrl="'blankCtrl'">{{tyler}}</div>

使用这样的控制器:

global.controller('blankCtrl',['$scope',function(tyler){
    tyler.tyler = 'tyler';
    tyler.tyler = 'chameleon';
}]);

可能有一种插值的值($interpolatedynamic-ctrl而不是解析它($parse)的方法,但是由于某种原因,我无法使其工作。



 类似资料:
  • 问题内容: 我正在尝试为包含的模板动态分配控制器,如下所示: 但是Angular抱怨这是不确定的。 我猜,是不是定义 尚未 (因为我可以附和了在模板中)。 我见过很多关于人们设置等于变量的示例,例如:。但是,如果不创建重复的并发循环,就无法弄清楚在需要时如何获得可用值。 PS我也尝试在模板中进行设置(认为​​到那时它一定已经解决了),但是没有骰子。 问题答案: 您的问题是ng-controller

  • 问题内容: 我试图在我的应用程序中编写通用路由,并根据路由参数动态解析视图和控制器名称。 我有以下有效的代码: 但是,我无法找到一种动态解析控制器名称的方法。我尝试使用此处所述的方法,但是ui- router似乎处理处理的方式与angular- route不同。 有指针吗? 编辑 :我已经尝试使用,但是对我不起作用(例如,以下代码仅返回一个硬编码的控制器名称,以测试其是否真正起作用): 给我以下错

  • 问题内容: 看来这个问题已经被问过几次了,但是没有正确的答案。 我的情况:我正在使用ajax(出于某种原因不使用角度路由模板)将模板(带有html和脚本)初始化为div。 index.html(主要) template.html(模板) 当我单击按钮时,它将文件加载到容器中,但是出现错误 错误:[ ng:areq ]参数’TempCtrl’不是函数,未定义 尽管已将其添加到应用控制器中。 我如何动

  • 问题内容: 我有一个现有页面,需要在其中添加一个可以动态加载的控制器的角度应用程序。 这是一个片段,它根据API和我发现的一些相关问题实现了关于如何完成操作的最佳猜测: JSFiddle。请注意,这是对实际事件链的简化,在以上各行之间有各种异步调用和用户输入。 当我尝试运行上述代码时,由$ compile返回的链接器将抛出:。如果我正确地理解了引导程序,那么它返回的注射器应该知道该模块,对吗? 相

  • 动画状态机 在游戏中,一个角色或其他动画游戏对象通常具有多个对应不同行为的动画剪辑。例如,一个角色在空闲时可能会呼吸或轻微摇摆,当收到命令时开始行走,从平台跌落时惊慌地抬起手臂。一扇门可以具有打开、关闭、卡住和被砸开动画。动画系统使用一种类似于流程图的可视系统来表示 状态机,是使你可以控制和序列化想要应用在角色或游戏对象上的动画剪辑。本章提供了有关动画系统的状态机的更多内容,并介绍如何使用它们。

  • 动画控制器视图 动画控制器视图允许你创建、查看和修改动画控制器资源。 动画控制器视图显示了一个新的空动画控制器资源 动画控制器视图主要有两部分:网格布局主体区域,左侧的分层和参数面板。 动画控制器视图的布局区域 深灰色网格部分是主体布局区域。你可以在这里创建、排列和连接 动画控制器 的状态(即动画剪辑)。 可以在网格上右键点击创建一个新的状态节点。使用鼠标中键拖动,或拖动时按住 Alt/Optio