javascript – 从JS外部访问Angular对象的函数

我正在使用AngularJS框架构建一个HTML应用程序.我有一些遗留的JavaScript动作需要访问Angular对象中的一个函数,我无法让它工作.
这是Angular对象(我需要访问的函数是$scope.info()):

function content($scope) {
    $scope.info = function (id) {
        console.log('Got a call from '+id);
        $scope.text = "Hello, "+id;
    };
}

我试图通过angular.element(‘content’).scope().info(‘me’)访问它,但没有结果(控制台说未定义).我试图转储angular.element(‘content’).scope()的结果,然后我得到了完整的对象列表和所有内容.从理论上讲,我的第一个例子应该有效,但事实并非如此.

任何有关如何实现这一目标的指导都非常感谢!
(PS:Call Angular JS from legacy code没有解决这个问题).

当我终于能够访问该函数时,它没有按预期工作 – $scope.text的值在技术上被修改,但HTML中使用的表达式不会更新!例如,从外部函数调用此函数后,< p> {{text}}< / p>不会更新.

有没有什么办法解决这一问题?

最佳答案
angular.element()需要一个DOM元素,所以如果你有这个html:

<div ng-controller="content">
</div>

并且您想要访问其DOM元素,请使用id:

<div id="myDiv" ng-controller="content">
</div>

然后

angular.element($('#myDiv')).scope().info('me')

或者没有jQuery:

angular.element(document.getElementById('myDiv')).scope().info('me')

应该管用.

编辑:

如果您在范围上更改了某些内容,则可能需要使用$apply()

angular.element(document.getElementById('myDiv')).scope().$apply();

转载注明原文:javascript – 从JS外部访问Angular对象的函数 - 代码日志