2016-06-26 13 views
0

角型アプリケーションはよく書かれていますが、角度で作成されたオブジェクトのインスタンスにアクセスする必要があります。どのようにオブジェクトのインスタンスを取得することができますか?角度以外のJavaScript関数から角度jsを作成する

内部には、[g.mapInstance = i = ....]行があります。私は角度の外の純粋なjavascriptで地図インスタンスにアクセスする必要があります。私は私の質問についてはっきりと願っています。おかげで多く...

a.module("myapp.maps", []).value("mapsConfig", {}).factory("mapsApi", ["$window", "$q", "mapsConfig", function(a, b, c) { 
    return b(function(b) { 
     var d = c.apiKey || "", 
      e = c.libraries || [], 
      f = e.join(","); 
     a.__handleApiReady = function() { 
      b(google.maps) 
     }; 
     $script("//maps.googleapis.com/maps/api/js?sensor=false" + (d ? "&key=" + d : "") + (f ? "&libraries=" + f : "") + "&callback=__handleApiReady") 
    }) 
}]).directive("maps", ["mapsApi", function(c) { 
    return { 
     restrict: "A", 
     replace: true, 
     transclude: true, 
     scope: { 
      center: "=center", 
      zoom: "=zoom", 
      dragging: "=dragging", 
      control: "=", 
      options: "=options", 
      events: "=events", 
      styles: "=styles", 
      bounds: "=bounds", 
      geocode: "=" 
     }, 
     template: '<div><div class="map-container"></div><div ng-transclude style="display: none"></div></div>', 
     controller: ["$scope", "$element", "$attrs", function(d, e, f) { 
      var g = this, 
       h = d.events, 
       i; 
      c.then(function(c) { 
       var j = { 
         zoom: 14, 
         mapTypeId: c.MapTypeId.ROADMAP, 
         mapTypeIds: [c.MapTypeId.ROADMAP, c.MapTypeId.HYBRID], 
         mapTypeControlOptions: { 
          style: c.MapTypeControlStyle.HORIZONTAL_BAR, 
          position: c.ControlPosition.TOP_RIGHT, 
          mapTypeIds: [c.MapTypeId.ROADMAP, c.MapTypeId.SATELLITE] 
         }, 
         zoomControl: true, 
         zoomControlOptions: { 
          style: c.ZoomControlStyle.SMALL 
         }, 
         streetViewControl: false, 
         scrollwheel: false, 
         panControl: true, 
         panControlOptions: { 
          position: c.ControlPosition.TOP_LEFT 
         }, 
         scaleControl: false, 
         scaleControlOptions: { 
          position: c.ControlPosition.BOTTOM 
         }, 
         disableDoubleClickZoom: true 
        }, 
        k = d.options; 
       g.mapInstance = i = new c.Map(e.find("div")[0], a.extend({}, j, k)); 
       d.$watch("bounds", function(a) { 
        if (a && a.length === 4) { 
         i.fitBounds(new c.LatLngBounds(new c.LatLng(a[2], a[3]), new c.LatLng(a[0], a[1]))) 
        } 
       }); 
       d.$watch("geocode", function(a) { 
        if (a) { 
         var b = new c.Geocoder, 
          d; 
         b.geocode({ 
          address: a 
         }, function(a, b) { 
          if (b == "OK" && a.length > 0) { 
           d = a[0].geometry; 
           i.setCenter(d.location); 
           if (d.hasOwnProperty("bounds")) { 
            i.fitBounds(d.bounds) 
           } 
          } 
         }) 
        } 
       }); 
       if (h) { 
        a.forEach(h, function(a, b) { 
         c.event.addListener(i, b, function() { 
          a.apply(i, arguments) 
         }) 
        }) 
       } 
       a.forEach(f.$attr, function(e, g) { 
        if (g.indexOf("options") === 0 && g.length > 7) { 
         f.$observe(g, function(b) { 
          var c = {}; 
          c[g.replace("options", "")] = b; 
          i.setOptions(a.extend({}, j, c)) 
         }) 
        } 
        if (g.indexOf("events") === 0 && g.length > 6) { 
         var h = b(g.replace("events", "")); 
         c.event.addListener(i, h.replace("-", "_"), function() { 
          d.$parent.$eval(f[g]) 
         }) 
        } 
       }) 
      }) 
     }] 
    }...... goes on 
+0

あなたは何をしようとしているのかについて、より高いレベルの説明ができますか?あなたのディレクティブに$ windowを注入してそこに必要な変数を格納するだけで済むように思えます。その後、あなたは角度の外側に世界的にアクセスすることができます – MorningDew

+0

角度コードは私のものではなく、それはいくつかのウェブサイトに埋め込まれています。だから私は角度コードを変更することはできません。私は、サイトをロードするクロムを持つシンプルなデスクトップアプリケーションを作成し、サイト上のフォームを自動的に埋めます。このサイト(ページ)には、そのサイトに角度コードで作成されたGoogleマップも含まれています。プログラムでは、私はjavascriptでその地図上にマーカーを配置する必要があります。しかし、私は作成されたマップのインスタンスを取得できませんでした。 – Tezcan

+0

上記のコードでは、マップインスタンスを作成する行があります。=> g.mapInstance = i = new c.Map(e.find( "div")[0]、a.extend({}、j、 k));私は角度にアクセスできますが、作成されたマップインスタンスにはアクセスできませんでした。 – Tezcan

答えて

0

私はそれを持っています。ホーンそれもsoneoneを助けることを願って..ヒントを与えるためのMorningDewに感謝します。以下は解決策です。

var s = angular.element(document.querySelector(".map-container")).scope(); 
var b = {}; b.latLng = {}; b.latLng.lat = function(){ return 41.005329; } ; 
b.latLng.lng = function(){return 28.891567; }; 
s.events.click(b); 
関連する問題