在 AngularJS 中使用 $controller 时如何消除缩小错误

2023-12-28

angular.module('mainApp').
  controller('dynamicRouteController', ['$scope', '$controller', '$routeParams', function($scope, $controller, $routeParams) {
    if(/^\d+$/.test($routeParams.pageOrName)) {
      $scope.controller = $controller('thisController', { $scope: $scope }).constructor;
      $scope.templateUrl = '/www/thisPage';
    } else {
      $scope.controller = $controller('thatController', { $scope: $scope }).constructor;
      $scope.templateUrl = '/www/thatPage';
    }
  }]);

这缩小为:

"use strict";
angular.module("mainApp").
controller("dynamicRouteController",["$scope",‌​"$controller","$routeParams",function(a,b,c){
/^\d+$/.test(c.pageOrName)?
(a.contro‌​ller=b("thisController",{$scope:a}).constructor,a.templateUrl="/www/thisPage"):
(a‌​.controller=b("thatController",{$scope:a}).constructor,a.templateUrl="/www/thatPa‌​ge")
}])

这是有缩小问题的,我认为这是因为 {$scope : $scope} 被改变了......我第一次遇到这个/使用这个方法。有人知道更好的写法,以便正确缩小吗?

编辑:所以发生的事情是,它正在传递 {$scope: a} ,这很好,但是在引用的控制器上,当其缩小时, $scope 已变成 a 或 b 或 e 取决于...所以如果我写代码“预缩小”,意味着我从字面上找到了另一个控制器中代表 $scope 的字母,我可以让它工作,但这太黑客了!再说一遍,有什么想法吗?

使用 Grunt 进行缩小 Angular 1.0.5 ...也许在以后的版本中修复了?

第二次编辑:一个不错的答案是将两个控制器显式地放入同一个文件中......这很丑陋......但它有效!因此,在一个控制器中,我声明了 2 个子控制器,这是蹩脚的。如果您知道另一种方法,请与班级分享!


我正在与@mclenithan 一起研究这个问题,我们得出的结论是:

$scope.controller = ['$scope', 'service1', 'service2', 
    $controller('thisController', { $scope: $scope }).constructor];

主要问题是控制器thisController and thatController有更多的参数需要注入$scope(在这个例子中它期望service1 and service2).

The $controller(...).constructor返回缩小的控制器函数,参数重命名为 a、b、c、d 等。当 Angular 尝试实例化控制器时,它在尝试找到要注入的正确服务时遇到问题。

使用数组表示法 http://docs.angularjs.org/api/AUTO.%24injector#thearraynotation而不仅仅是控制器功能解决了这个问题。看关于缩小的注释 http://docs.angularjs.org/tutorial/step_05#anoteonminification在教程中了解更多信息。

另请参阅这个问题 https://stackoverflow.com/questions/18131834/angularjs-regex-route-for-similar-url-to-load-different-controller-and-view了解我们一开始想要做的事情的背景。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 AngularJS 中使用 $controller 时如何消除缩小错误 的相关文章

随机推荐

  • 如何使用 UICollectionView 复制 iOS Chrome 选项卡效果 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在创建一个应用程序 其中视图之一
  • Scala 中存在“无法解析符号”错误的通用方法

    我需要获得一个通用的检查方法 可以按如下方式使用 check Int 10 1 5 and check Double 10 0 1 0 5 0 我尝试了这段代码 trait RangeChecker def check T lt AnyVa
  • 如何翻译外部 javascript 文件中的文本? (姜戈)

    我有一个 JavaScript 文件 它根据用户交互将元素附加到正文 现在 在我的 index html 模板中 我使用翻译后的文本声明全局变量 block main endblock 因此 在 Django 翻译索引模板中的文本后 我的
  • #include C/C++ 中的头文件

    在阅读了几个有关编译 特别是 C 问题的问题并注意到在许多情况下问题是缺少标头 include 后 我不禁对自己的无知感到疑惑 并问自己 现在也问你 为什么缺少的标头不会自动检查并添加或请求给程序员 例如 此类功能可用于 Netbeans
  • 如何将文字放在图像的中间

    你好 使用 CSS 我试图将一些文本放在图像的中心 所以它看起来像这样 div P I This is some text C div 我怎样才能达到这个结果 不知道这是否有帮助 图像是 32x32 像素 img vertical alig
  • Doctrine2 中 JOIN ON 和 JOIN WITH 有什么区别?

    Doctrine2 中 JOIN ON 和 JOIN WITH 有什么区别 我在手册中找不到任何相关信息 ON替换原来的连接条件 WITH为其添加一个条件 Example Album OneToMany gt Track Case One
  • 子图日期时间 X 轴刻度未按预期工作

    我正在尝试绘制许多图 以下是数据组织方式的示例 我的目的是使用谷歌分析数据构建一系列几小时或几天 比如一周 7 天 或一天 24 小时 的子图 我的索引是日期时间对象 这是当轴正确完成时单个图的外观示例 from datetime impo
  • 了解 Traceview

    我想了解跟踪视图是如何工作的 我尝试使用traceview 分析一种方法 但有一个疑问 我已附上 trace 的快照 它表示大部分时间由蓝色标记的 顶级 占用 但没有更多信息 这个方法何时执行或者执行什么功能 谁能向我解释一下为什么它花费这
  • 在scala中调用akka actor的方法

    我有一个演员定义如下 class nodeActor ID String extends Actor 其中包含一个方法 用于在启动之前设置 actor def addRef actor ActorRef 我这样实例化这个演员 val nod
  • Junit ant 任务 - 未找到 JUnitTask

    我正在尝试从我的 ant build xml 文件运行 Junit 测试 我读here http ant apache org manual Tasks junit html您可以使用 junit jar 文件 而不是使用位于 ant ho
  • 如何消除 Flutter 中两个容器之间的空间?

    我在 Column 小部件内有两个高度 250 的容器 这两个容器小部件之间没有任何其他小部件 但我仍然可以看到两个容器之间的空间很小 这是我的代码 import package flutter material dart void mai
  • 什么是spark.driver.maxResultSize?

    The ref http spark apache org docs latest configuration html says 每个分区的所有分区的序列化结果总大小的限制 激发行动 例如收集 应至少为 1M 或 0 无限 如果总大小超过
  • 如何以编程方式将 Excel 数据导入到 Access 表中?

    我已经阅读了一些相关主题 但仍然留下了这个问题 我想在 Access 数据库应用程序中编写一个函数 以编程方式导入从前两行 标题和单位分隔符 之前开始的 Excel 数据 我希望完成以下任务 能够动态选择我要导入的 Excel 文件 可能使
  • 选择nodeValue但排除子元素

    假设我有这个代码 p Hello this is a description a href Click here for more a p 如何选择的nodeValuep但排除a它的内容是什么 我当前的代码 result xpath gt
  • 步骤中未找到此类 DSL 方法“管道”

    我在 Jenkins 中的声明性管道脚本中不断收到此错误 No such DSL method pipeline found among steps 我的脚本是这样的 pipeline agent any stages stage Exam
  • 谷歌存储桶文件链接可公开访问,即使不公开?

    我正在玩谷歌桶 该存储桶不是公共的 这些文件也不公开 我上传 csv 文件后 我点击它 它在谷歌浏览器的浏览器中显示了带有一个很长的复杂 url 链接的文件 现在 如果我使用该链接并在另一个没有登录谷歌帐户的浏览器 例如 IE 中打开 我就
  • C# - 应用程序显示函数之间的所有依赖关系?

    是否有某种应用程序可以分析源代码并以图形方式显示函数之间的所有连接 我需要它来处理我正在处理的遗留代码 它很大 功能齐全 而且写得很糟糕 NDepend http www ndepend com 正是这样做以及更多其他事情 代码指标
  • 汇编程序文件 (*.asm) 的 gedit 语法突出显示

    默认情况下 gedit 不进行语法高亮显示 asm files 如何添加对此语言的支持 以下步骤应该足够了 wget http www carminebenedetto net downloads asm intel lang sudo c
  • 无法使用 PowerMock 模拟 java.lang.System#exit(int) 方法

    我的应用程序有一个流程 最后是方法System exit int 正在被呼叫 我正在尝试通过使用 TestNG 运行测试来测试此流程 然而 在运行测试时 尽管测试已完成 但我收到了这条奇怪的消息 只是为了找到根本原因 我删除了System
  • 在 AngularJS 中使用 $controller 时如何消除缩小错误

    angular module mainApp controller dynamicRouteController scope controller routeParams function scope controller routePar