如何从外部访问组件控制器

时间:2017-07-23 10:12:18

标签: javascript angularjs angularjs-components

我正在使用Angular 1.5,我有一个像这样的组件

        angular
        .module('appliactionModule')
        .component('umleditor', {
            bindings: {
                 ...
            },
            templateUrl: 'app/uml-editor/umleditor.html',
            controller: UmlEditorController
        });

       function UmlEditorController( ... ){ ... };

然后在app/uml-editor/umleditor.html我希望有一些javascript能够像这样访问控制器UmlEditorController

<div class="editor-wrapper" id="editor">
  ...
  <script>
     // Accessing Services like this works
     var FooService = angular.element('*[ng-app]').injector().get("FooService");

     // How do I get the controller?
      controller.doSomething();

  </script>
</div>

如何从外部获取对Controller的引用,以便我可以从常规JavaScript(而不是Angular)中使用它?

1 个答案:

答案 0 :(得分:1)

鉴于存在umleditor组件,可以使用以下命令检索控制器实例:

angular.element(document.getElementById("editor")).controller('umleditor');

或者

angular.element(document.getElementById("editor")).isolateScope().$ctrl;

这被认为是一种不好的做法,应该用于测试或快速修复。通常情况相反,外部JS代码应该用Angular app包装。