Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将值从ui gmap windows信息窗口/标记传递到ui sref?_Javascript_Angularjs_Google Maps_Angular Ui Router_Angular Google Maps - Fatal编程技术网

Javascript 如何将值从ui gmap windows信息窗口/标记传递到ui sref?

Javascript 如何将值从ui gmap windows信息窗口/标记传递到ui sref?,javascript,angularjs,google-maps,angular-ui-router,angular-google-maps,Javascript,Angularjs,Google Maps,Angular Ui Router,Angular Google Maps,我正试图使用谷歌地图模块的ui-gmap-windows在谷歌地图的信息窗口中创建一个链接 在我的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="'op

我正试图使用谷歌地图模块的
ui-gmap-windows
在谷歌地图的信息窗口中创建一个链接

在我的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>
<div data-ng-controller="infowindowTemplateController">
    <div class="mapinfowindow" data-ui-sref="display({id: parameter.id})">
        <div class="previewimage-container">
            <img data-ng-attr-src="{{:: parameter.img }}">
        </div>
        <span>{{:: parameter.title }}</span>
    </div>          
</div>
注意我使用的是“controller as”语法,因此控制器中的
vm.markers
在html模板中显示为
main.markers

我看到的问题是html中的
data ui sref=“display({id:id})”
将状态更改为“display”页面,但是没有将
id
作为$stateParams值推送,这显然不好,因为我不知道显示什么

我有另一个指向同一页面的链接,在InfoWindow之外创建(在结果列表中),并且会推送id值:

<div data-ng-repeat="entry in main.itemlist">
    <div data-ui-sref="display({id: entry.id})">


非常感谢您对信息窗口链接的任何帮助。

如果
id
在作用于
的范围内确实可用。MapInfo Window
您可以尝试:

<div class="mapinfowindow" data-ui-sref="display({id: '{{id}}'})"> 

(来源:)


如果这不起作用,您可能需要一个自定义指令。

以下是我如何根据以下信息解决此问题的:

我为InfoWindow创建了一个模板和单独的控制器,并将我的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'" templateUrl="'templateUrl'" templateParameter="'templateParameter'" ng-cloak>
        </ui-gmap-windows>
    </ui-gmap-markers>
</ui-gmap-google-map>
在InfoWindow的模板中,我有:

<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>
<div data-ng-controller="infowindowTemplateController">
    <div class="mapinfowindow" data-ui-sref="display({id: parameter.id})">
        <div class="previewimage-container">
            <img data-ng-attr-src="{{:: parameter.img }}">
        </div>
        <span>{{:: parameter.title }}</span>
    </div>          
</div>

使用
$parent
获取值

模板:

<ui-gmap-marker ng-repeat="marker in markers"
                   coords="marker.coords">
    <ui-gmap-window ng-cloak>
        <a ui-sref="details({ id : $parent.marker.id })">Go!</a>
    </ui-gmap-window>
</ui-gmap-marker>
for (var i = 0; i < mArray.length; i++) {
    var marker = {
        id            : mArray[i]._id,
        coords        : {
            latitude  : mArray[i].address.latitude,
            longitude : mArray[i].address.longitude
        }
    };
    $scope.markers.push(marker);
}

走!
控制器:

<ui-gmap-marker ng-repeat="marker in markers"
                   coords="marker.coords">
    <ui-gmap-window ng-cloak>
        <a ui-sref="details({ id : $parent.marker.id })">Go!</a>
    </ui-gmap-window>
</ui-gmap-marker>
for (var i = 0; i < mArray.length; i++) {
    var marker = {
        id            : mArray[i]._id,
        coords        : {
            latitude  : mArray[i].address.latitude,
            longitude : mArray[i].address.longitude
        }
    };
    $scope.markers.push(marker);
}
for(变量i=0;i
您可以使用工厂为每个状态更改事件保持$location参数有序,或创建筛选器/装饰器。您是否验证了
id
是在
的范围内定义的。MapInfo Window
?在
span
中添加
{{{id}}
,看看它是否确实可用。除非我将它放在
ng non-bindable
中,
范围中似乎没有任何内容可用。但是如果我设置了
ng non bindable
,我就不能使用
ui sref
中的值。。。O_oClose-这是有效的,您也不需要单引号:
似乎需要
数据ng非绑定的
。实际上,现在我已经测试过了-id确实出现在html源代码中,但ui sref没有启动,可能是因为同一个不可绑定的参数..我现在正在研究的一个可能的解决方案: