Angularjs 在角形传单指令中使标记信息/标签可点击

Angularjs 在角形传单指令中使标记信息/标签可点击,angularjs,angular-leaflet-directive,Angularjs,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 });

我正在使用角传单指令,并试图使我的标记信息可点击。当我在标记消息中使用html时,html被正确呈现,但ng click不起作用。这是我的

 $scope.map.markers.push({
    lat: lat,
    lng: lng,
    message: '<span ng-click="openView()">' + data.results[i].locationName + '</span>',
    draggable: false
});
$scope.map.markers.push({
拉特:拉特,
液化天然气:液化天然气,
消息:“”+数据。结果[i]。位置名称+“”,
可拖动:错误
});

有人知道我做错了什么,或者知道如何在单击标记消息时调用函数吗?

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

无论如何,编译服务的工作原理是这样的,但至少就我个人而言,我会尝试找到一种不同的解决方案:

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);
      }
    }
  }]);
angular.module('sampleApp',[])
.directive('howcileworks',['$compile',function($compile){
返回{
模板:“”,
限制:“A”,
链接:功能(范围、元素、属性){
scope.shout=函数(){
警惕(“我说你好!!”);
}
html('helloyo!');
$compile(element.contents())(范围);
}
}
}]);

干杯

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

$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; }
});
$scope.openView=function(){…};
$scope.map.markers.push({
拉特:拉特,
液化天然气:液化天然气,
消息:“”+数据。结果[i]。位置名称+“”,
getMessageScope:function(){return$scope;}
});

感谢您的回复。我同意,我不想要一个混乱的解决方案。我只是在寻找一种方法,让标记的标签可以点击。我不知道你说的使用RepeatNG是什么意思,但我很感兴趣。你介意解释一下我如何使用它使标记标签可点击吗?谢谢。我在想没有html的js:$scope.map.markers.push({lat:lat,lng:lng,message:data.results[I].locationName,draggable:false});这是我的评论:我在想这样的事情,但我不知道它是否适用于你的项目。在js处更改此行::message:data.results[i].locationName在您的视图中添加以下内容:{marker.message}}@WootWoot Yes,自版本0.7.10起。仍在发展中。