发布此问题: 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>
任何帮助都会很棒,谢谢堆,几天都在摸不着头脑,没有结果。
此致 吉姆
答案 0 :(得分:8)
问题是,您将innerHTML作为infoWindow的内容插入而不是编译的标记。因此,您的代码将被评估一次,并且您只传递此编译的静态内容。请尝试使用infoWindow.setContent(compiled[0])
代替infoWindow.setContent(compiled[0].innerHTML)
答案 1 :(得分:0)
我确实遇到了这个问题并想分享我的解决方案,请理解这是一个特定的用例解决方法,需要重新路由用户,这可能在您的方案中根本不起作用。
我所做的是首先将参数传递到我需要的每个标记对象中,因此可以通过此信息在信息窗口中访问它们。然后我删除了ng-click,而是使用了一个带有href到路由的标签,以及我在移除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所需的值。
如果这有助于任何人,我很感兴趣。