使用angular.element通过$ ID获取范围对象

The*_*iff 5 html javascript angularjs angularjs-scope

我需要将角度应用程序中的数据传递给在角度以外运行的脚本,因为我无权编辑角度应用程序的代码.

使用Angular Batarang和NG-Inspector扩展程序,我可以看到我需要从中获取的JSON对象,但我不知道如何开始.

例如,在Angular Batarang中,对象看起来像:

$id=5
name: "listing"
keys:
   0: "alpha"
   1: "beta"
alpha:
   user: "test"
   userID: "12345"
beta: 
   address: "555 Elm St"
   phone: 555.555.5555
Run Code Online (Sandbox Code Playgroud)

我最初的想法是我可以使用它,angular.element但我没有任何成功.

scn*_*iro 12

您可以确定范围绑定到哪个元素,选择元素,然后通过获取范围angular.element.假设此范围附加到元素<div id="stuff"></div>,请观察以下示例,特别是调用.scope()

<div ng-app="app" ng-controller="ctrl" id="stuff"></div>

<button onclick="getStuff()">get stuff</button>
Run Code Online (Sandbox Code Playgroud)
var app = angular.module('app', []).controller('ctrl', function($scope) {
   $scope.inside = { 'name': 'guy', 'idk': 'blah' }
});

var getStuff = function() {
    var outside = angular.element(document.getElementById('stuff')).scope();
    console.log(outside.inside) // retrieved "outside" of AngularJS
}
Run Code Online (Sandbox Code Playgroud)

JSFiddle示例 - 演示


更新

根据文档,必须启用调试模式.

scope() - 检索当前元素或其父元素的范围.需要启用调试数据.

它默认启用,禁用它会导致此处出现问题