在angular-leaflet-directive中使标记消息/标签可单击

时间:2014-05-25 01:44:42

标签: angularjs angular-leaflet-directive

我正在使用angular-leaflet-directive并尝试使我的标记消息可以点击。当我在标记消息中使用html时,html正确呈现,但ng-click不起作用。这就是我所拥有的。

 $scope.map.markers.push({
    lat: lat,
    lng: lng,
    message: '<span ng-click="openView()">' + data.results[i].locationName + '</span>',
    draggable: false
});

任何人都知道我做错了什么或知道如何在点击标记消息时调用函数?

2 个答案:

答案 0 :(得分:2)

现在,您可以在弹出消息中轻松使用Angular模板:

$scope.openView = function() { ... };

$scope.map.markers.push({
    lat: lat,
    lng: lng,
    message: '<span ng-click="openView()">' + data.results[i].locationName + '</span>',
    getMessageScope: function() {return $scope; }
});

答案 1 :(得分:0)

你遇到了大麻烦:P。使新的角度代码开箱即用的唯一方法是使用$ compile服务。我不是故意粗鲁,但如果我在你的位置,我会尝试找到另一种方法,比如使用ng-repeat和改变你的逻辑。

无论如何,编译服务的工作方式有点像这样,但至少我个人试图找到一个不同的解决方案:

angular.module('sampleApp', [])
  .directive('howCompileWorks', ['$compile', function($compile){
    return {
      template: '',
      restrict: 'A',
      link: function (scope, element, attr) {
        scope.shout = function(){
          alert("I SAID HELLO!!");
        }
        element.html('<span ng-click="shout()">Hello yo!</span>');

        $compile(element.contents())(scope);
      }
    }
  }]);

干杯