javascript - 在指令内使用 rootscope 变量

标签 javascript angularjs angularjs-directive angularjs-scope

我有一个显示谷歌地图的指令。我正在从 rootscope 传递纬度和经度值。 map 第一次正确加载,但如果我通过 rootscope 更改纬度和经度值,它不会加载并显示空白 map 。它也不会抛出任何错误。

我的 map 指令

<map class="card map"  ng-hide="{{$scope.hideMap=false;}}"  on-create="mapCreated(map)"></map>

我的指令代码:

angular.module('starter.directives', [])

.directive('map', function($rootScope) {
  return {
    restrict: 'E',
    scope: {
      onCreate: '&',
     
    },
    link: function ($scope, $element, $attr) {
      function initialize() {
       
           //Need to pass value from rootscope

        myLatlng = new google.maps.LatLng($rootScope.prodPositions.latitude, $rootScope.prodPositions.longitude);
       
       
       
        var mapOptions = {
          center:   myLatlng,
          zoom: 16,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map($element[0], mapOptions);
  
   var marker = new google.maps.Marker({
          position:  myLatlng,
          map: map,
          title: 'Pizz Hut'
        });
        $scope.onCreate({map: map});

        // Stop the side bar from dragging when mousedown/tapdown on the map
        google.maps.event.addDomListener($element[0], 'mousedown', function (e) {
          e.preventDefault();
          return false;
        });
      }

      if (document.readyState === "complete") {
        initialize();
          console.log("test lat2"+$rootScope.prodPositions.latitude, $rootScope.prodPositions.longitude);
      } else {
        google.maps.event.addDomListener(window, 'load', initialize);
          console.log("test lat3"+$rootScope.prodPositions.latitude, $rootScope.prodPositions.longitude);
      }
    }
  }
});

最佳答案

我认为您需要监视 $rootScope.prodPositions 变量的更改,然后需要重新编译指令。

要重新编译您的指令,您需要将其添加到链接函数中:

$compile($element.contents())($scope);

并添加 $compile 服务作为 DI。

Angular $compile

关于javascript - 在指令内使用 rootscope 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33231525/

相关文章:

javascript - Angular 在外部 Controller 中使用带有对象的 jQuery 插件

javascript - 如何获取Asp :Repeater has generated?的总行数

javascript - Browserify - 在符号链接(symbolic link)模块上的 package.json 中进行转换在 npm3 中不起作用

javascript - 预先检查的输入框未被序列化

javascript - 如何在新的 AngularFire v0.8.0 中实现 $child 方法?

javascript - 单击插入另一个模板

javascript - iOS 3D Touch API 使用 Javascript for Web App

javascript - 防止 QTip 工具提示离开屏幕? (绑定(bind)到 body 上?)

javascript - AngularJS ng 单击多次调用

javascript - 按需运行 AngularJS 指令