1

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
});

私が間違っていることを知っている人や、マーカーメッセージがクリックされたときに関数を呼び出す方法を知っている人はいますか?

4

2 に答える 2

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; }
});
于 2015-01-14T03:12:38.833 に答える
0

あなたは大きな問題を抱えています :P. 新しい angular コードをすぐに使用できるようにする唯一の方法は、$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);
      }
    }
  }]);

乾杯

于 2014-05-25T05:12:25.673 に答える