在我的非 Angular 代码中,我通过以下代码获取 Controller 对象
var controllerElement = angular.element('[ng-controller="' + controllerName + '"]');
var controller = controllerElement.controller();
直到前天, Controller 对象有一些 $get.h 而不是 Controller 对象时,它一直运行良好{}
以下代码返回正确的 Controller 对象,但在某些情况下 Angular 会抛出异常:
var $controller = injector.get("$controller");
var controller = $controller(controllerName, { $scope: scope });
你能帮我找出以前的方法有什么问题吗,即 controllerElement.controller();
编辑: 发现后一种方法的另一个问题是它实例化了一个新的 Controller 对象,而不是返回与元素关联的原始 Controller 对象。
最佳答案
我强烈建议不要将 Angular 代码与外部 JS 混合使用。每次你调用Controller
,它确实会创建一个新对象,但据我从你的问题中了解到,你可能想对它或它的数据进行一些操作。对于跨 Controller 或应用程序状态的持久数据,您应该使用 Service
或 Factory
,并且操纵它应该发生在其中,或者来自 Controller
不是某个地方的一些随机 JS。
关于javascript - 无法获取 AngularJS Controller 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30341304/