一尘不染

从外部JS访问Angular对象的功能

angularjs

我正在使用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'),但是没有结果(控制台说undefined)。我尝试转储的结果angular.element('content').scope(),并且获得了完整的对象列表和所有内容。从理论上讲,我的第一个示例应该可以,但是不能。

非常感谢我如何实现这一目标的任何指导!


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

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


阅读 218

收藏
2020-07-04

共1个答案

一尘不染

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();
2020-07-04