Angular.Element(.).范围()最初返回未定义的



我正在尝试在控制器外访问我的角控制器的范围。我正在使用执行某些操作并完成的外部JS库执行某些回调。在一个回调中,angular.element(document.findElementById('elementId').scope()返回undefined。但是在第一个之后执行的第二个回调中 angular.element(document.findElementById('elementId').scope()返回有效范围。

这是一些示例代码

    <body id="authcontroller" ng-controller="AuthenticationController as auth">
<script>
    window.externalLibObj = {
     onCallback1: function(){
         // Undefined value for scope
         var scope = angular.element(document.getElementById('authcontroller')).scope();
     },
     onCallback2(): function(){
        // Valid value for scope
        var scope = angular.element(document.getElementById('authcontroller')).scope();
     }
    };
</script>
    </body>

执行这些回调的顺序是onCallback1,然后是onCallback2var scopeonCallback1中未定义,但在onCallback2

中具有值

为什么scopeonCallback1中未定义?

谢谢您的帮助

这似乎是一个计时问题。执行第一个回调时,范围尚未准备就绪,但在您的第二个回调中。当正确加载关联的视图时,您应该更改逻辑并触发控制器中的回调。

在您的authentication controller中添加以下内容:

$scope.$on('$viewContentLoaded', function(){
  // here define/fire your callbacks and you will be sure that everything is init
});

我希望它能有所帮助

最新更新