在$ compile map的infowindow内容

时间:2015-07-04 20:08:52

标签: javascript angularjs google-maps

我试图通过$编译内容并设置为infowindow来实现动态地图(Google Map)Infowindow。

我希望infowindow显示依赖于悬停/点击标记的数据,用户可以点击其中的某个按钮来调用$ scope的功能。
除了$ scope函数之外,所有数据绑定都可以正常工作(所有值都有),当我点击按钮时没有触发任何内容。

以下是我的一些代码:

map.directive.js
///////

function linkFn(scope, element, attrs) {
    scope.mapPane = new MapPane();
    scope.actionButton = function() {
       alert('it should trigger this');
    }

    function MapPane() {
        var self = this;
        self.infoWindow = new google.maps.InfoWindow({..})

        self.openInfoWindow = function() {
            $timeout(function(){
                var content = getContentByMarkerType();
                var el = $compile(content)(scope);
                self.infoWindow.setContent( el );

                self.infoWindow.open( map, latlngObj )
            }
        }
    }
}

对于infowindow模板, 我使用ng-bind作为数据值 和ng-click =" actionButton()"用于调用函数,但单击按钮时没有任何反应。

我做错了什么或忘了什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

你试过这个$ compile模式吗?

var compiled = $compile(template);
var elm = complied(scope);
element.append(elm);

这样可以完全创建模板并延迟添加范围值,直到它为止。