3

在此问题之后: AngularJS ng-include inside of Google Maps InfoWindow?

提供的解决方案效果很好,但是我在将 ng-click 添加到模板时发现了一个问题,它没有得到评估。

<script type="text/ng-template" id="/test.html">  
   <h4>{{latLng[0]}},{{latLng[1]}}</h4>   
   <button ng-click="clickMe()"/>click</button>
 </script>

clickMe 只是测试控制器内部的功能,

$scope.clickMe = function(){
  alert("clicked");
}

附加信息:ng-hide 评估得很好:

<script type="text/ng-template" id="/test.html">  
  <h4>{{latLng[0]}},{{latLng[1]}}</h4>   
  <button ng-hide="true" ng-click="clickMe()"/>click</button>
</script>

任何帮助都会很棒,谢谢堆,几天来摸不着头脑,没有结果。

问候吉姆

4

2 回答 2

8

问题是,您插入的是 innerHTML 而不是已编译的标记作为 infoWindow 的内容。所以你的代码被评估一次,你只传递这个编译的静态内容。请尝试使用infoWindow.setContent(compiled[0])而不是infoWindow.setContent(compiled[0].innerHTML)

于 2013-09-21T12:15:43.603 回答
0

我确实遇到了这个问题,想分享我的解决方案,请理解这是一个特定的用例解决方法,需要重新路由用户,这在您的场景中可能根本不起作用。

我所做的是首先将参数传递给我需要的每个标记对象,这样就可以通过这个在信息窗口中访问它们。然后我删除了 ng-click,而是使用了一个带有 href 的 a 标签,以及我在删除 ng-click 后需要的参数。这是代码位:

    var marker = new google.maps.Marker({
        position: myLatLng,
        map: map,
        id: myParam1
    });

    google.maps.event.addListener(marker, 'click', function () {
        infowindow.setContent('<div id="content">'+
        '<a href="/site#/alinkroute?id='+this.myParam1+'">A ref to new template</a><br>'+
        '</div>'
      );
      infowindow.open(map, this);
    });

然后我让 routeProvider 提供到此地址的标准模板的路由,其中​​我有一个 ng-init 调用我的 ng-click 没有参数。在我的 ng-click 中,我使用标准 javascript 来解析参数的 url,并获得我的 ng-click 所需的值。

如果这对任何人有帮助,我很感兴趣。

于 2017-01-16T20:32:06.263 回答