3

我正在使用http://nlaplante.github.io/angular-google-maps/在我的 Angular 应用程序中显示地图。我的页面有一个通用控制器来获取 Json。要显示标记,我在范围内使用 $watch 因为我会实时进行,并且标记位置可以改变。

$scope.model  = new Model 'api/now.json'
$scope.state  = new DState

$scope.$watch ->
  markers = []
  _($scope.model.objects).each (obj) ->
    markers.push
      latitude:   obj.latitude
      longitude:  obj.longitude
      infoWindow: "<info-window>SHOULD NOT DISPLAY CAUSE DIRECTIVE</info-window>"

  markers
  , (newValue) ->
    $scope.state.map.markers = newValue
  , true

我的指令是基本的:

am.directive "infoWindow", ->

restrict: 'E'
template: "<div>IN DIRECTIVE</div>"
replace: true

我的 Html 页面调用地图:

#dashboard{ng:{controller: 'dashboardCtrl'}}


  #map.google-map{center:     'state.map.center',
                  zoom:       'state.map.zoom',
                  markers:    'state.map.markers',
                  draggable:  'true'}

和 DState Factory 来定义状态:

.factory 'DashboardState', (Media) ->
  class DashboardState
    defaults:
      map:
        center:
          latitude:   45.764043
          longitude:  4.835659
        zoom: 10
        markers: []
      selectedObj: null

    constructor: (initialData) ->
      _(@defaults).extend initialData
      _(this).extend @defaults

所以,我在 infoWindow 中的显示是

不应显示原因指令

但我应该有我的指令中的内容:

指示

我的指令没有被调用......你有什么想法吗?

这是一个双重问题,我想将我工厂的SelectedObj设置为 Obj 本人。您是否有想法如何处理标记上的事件单击以及将其放置在何处以调用可以将我的 obj 分配给 SelectedObj 的方法?

提前致谢

4

1 回答 1

0

您可以尝试以下方法:

  1. 获取最新版本的 angularjs-ui-maps
  2. 使用指令的 tempalteUrl 属性 - 您可以在模板中添加指令(请参阅源代码中包含的 example.html 中如何完成此操作)。

这样你就可以避免任何自定义的 html 编译

我遇到了类似的问题:https ://stackoverflow.com/questions/20843463/angularjs-using-a-directive-in-google-maps-marker-window

如果您发现任何其他方法,请发布它。

高温高压

于 2014-02-20T14:41:43.010 回答