我需要将角度应用程序中的数据传递给在角度以外运行的脚本,因为我无权编辑角度应用程序的代码。
对Chrome使用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
我最初的想法是我可以使用angular.element
抓住它,但我没有取得任何成功。
答案 0 :(得分:12)
您可以确定范围绑定的元素,选择元素,并通过angular.element
获取范围。假设此范围附加到元素<div id="stuff"></div>
,请观察以下示例,特别是对.scope()
的调用
<div ng-app="app" ng-controller="ctrl" id="stuff"></div>
<button onclick="getStuff()">get stuff</button>
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
}
JSFiddle Example - 演示
更新
根据docs,必须启用调试模式。
scope() - 检索当前元素或其父元素的范围。需要启用调试数据。
默认情况下已启用,disabling it会导致此处出现问题