我想创建一个谷歌地图信息窗口中的链接,使用角谷歌,地图模块的ui-gmap-windows
。如何将ui-gmap-windows InfoWindow/Marker的值传递给ui-sref?
在我的HTML模板,我有:
<ui-gmap-google-map center='main.map.center' zoom='main.map.zoom' options='main.map.options'>
<ui-gmap-markers models="main.markers" coords="'self'" icon="'icon'" options="'options'" click="'onClick'" fit="true">
<ui-gmap-windows show="'showWindow'" closeClick="'closeClick'" ng-cloak>
<div class="mapinfowindow" data-ui-sref="display({id: id})">
<span class="itemname" data-ng-non-bindable>{{ title }}</span>
</div>
</ui-gmap-windows>
</ui-gmap-markers>
</ui-gmap-google-map>
在我的控制,我有:
uiGmapGoogleMapApi.then(function(maps) {
vm.itemlist = search.getItemList();
var markers = [];
_.each(vm.itemlist,function(item){
search.getGeometry(item.href).then(function(marker) {
marker.title = item.en;
marker.id = item.href;
marker.showWindow = false;
marker.options = {
title: item.en,
icon: markericon.normal
};
marker.onClick = function() { vm.markerClick(marker); };
marker.closeClick = function() { vm.markerCloseClick(marker); };
markers.push(marker);
});
});
vm.markers = markers;
});
注意,我使用了 '控制器' 的语法,所以控制器中的vm.markers
在html模板中显示为main.markers
。
我看到的问题是,在HTML中的data-ui-sref="display({id: id})"
改变状态到“显示”页面,但通过id
不推为$ stateParams值,这显然是不好的,因为我不知道要显示什么..
我有另一个链接到同一页面,信息窗口之外创建的(在结果列表),以及确实挤过id的值:
<div data-ng-repeat="entry in main.itemlist">
<div data-ui-sref="display({id: entry.id})">
获得I的任何帮助非常感谢nfoWindow的链接工作。
您可以使用一个工厂,以保持$位置PARAMS才能,或创建一个过滤器/装饰,每一个状态改变发生。 – irth 2014-12-05 06:44:49
您是否确认'id'是在'.mapinfowindow'范围内定义的?在'span'中添加'{{id}}'或者其他东西,看它是否可用。 – mjtko 2014-12-05 10:15:18
除非我把它放在'ng-non-bindable'中,否则''范围内的任何东西都不可用。但是,如果我设置了'ng-non-bindable',我不能使用'ui-sref'中的值... O_o –
egeland
2014-12-05 16:54:56