【问题标题】:Define html with ng-click in controller Angular在控制器Angular中使用ng-click定义html
【发布时间】:2016-08-03 09:34:57
【问题描述】:

我只是在 AngularJS(Ionic) 中使用 Wikiitude 和 Google 地图。我需要在我的控制器中为 InfoWindow 设置 ng-click 事件。我的代码:

google.maps.event.addListenerOnce($scope.map, 'idle', function(){

  var marker = new google.maps.Marker({
      map: $scope.map,
      animation: google.maps.Animation.DROP,
      position: latLng
  });

  var infoWindow = new google.maps.InfoWindow({
      content: '<a href="#" ng-click="launchAR(\'my_world_pls\')">CATCH!</a>'
  });

  google.maps.event.addListener(marker, 'click', function () {
      infoWindow.open($scope.map, marker);
  });

});

【问题讨论】:

  • 好的。当您尝试您的代码时会发生什么?
  • 没有渲染标记和信息窗口。但链接无效
  • 你能把a标签上的href去掉试试看吗?

标签: javascript angularjs google-maps ionic-framework


【解决方案1】:

您不能将动态创建的 HTML 直接链接到控制器。这个link中提到了两个选项

其他选项是使用 jQuery。为此,您可以向anchor element 提供id 并通过ID 查找元素并附加点击事件。

【讨论】:

  • 使用 jQuery 的解决方案听起来不错。但是如何附加角度事件,例如: $scope.launchAR = function(){};
【解决方案2】:

解决了。

google.maps.event.addListenerOnce($scope.map, 'idle', function() {

    var marker = new google.maps.Marker({
      map: $scope.map,
      animation: google.maps.Animation.DROP,
      position: latLng
    });

    google.maps.event.addListener(marker, 'click', function() {
      $scope.launchAR('mana_catch_and_eat');
    });

  });

【讨论】: