2015-09-16 32 views
5

我需要將角度應用中的數據傳遞到角度以外運行的腳本,因爲我無權編輯角度應用的代碼。

使用適用於Chrome的Angular Batarang和NG-Inspector擴展,我可以看到我需要從中提取的JSON對象,但我無法啓動。

例如,在角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但我沒有任何成功。

回答

10

您可以確定該範圍所綁定的元素,選擇該元素,並通過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 - 演示

+0

你是真棒。這工作完美...我的問題是有自定義元素,所以而不是getElementById,我去了querySelectorAll,並找到了我想要的範圍對象的元素。 謝謝你的幫助! – TheIntrepidSpiff

+0

非常感謝,這是正確的解決方案。 – mesutpiskin