我正在使用AngularJS框架构建HTML应用程序。我有一些旧的JavaScript操作,需要访问Angular对象中的函数,但无法使其正常工作。 这是Angular对象(我需要访问的函数是$scope.info()):
$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(),并且获得了完整的对象列表和所有内容。从理论上讲,我的第一个示例应该可以,但是不能。
angular.element('content').scope().info('me')
undefined
angular.element('content').scope()
非常感谢我如何实现这一目标的任何指导!
当我终于能够访问的功能,它并没有如预期的工作-的价值$scope.text是 技术上的 修改,但不更新在HTML中使用的表述!例如,<p>{{text}}</p>从外部函数调用此函数后不会更新。
$scope.text
<p>{{text}}</p>
有没有什么办法解决这一问题?
angular.element()需要一个 DOM元素 ,所以如果您有这个html:
angular.element()
<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();