2016-12-05 8 views
0

AngularJSコントローラでhtmlへの関数呼び出しを追加する際に問題があります。angularJSコントローラ(IONIC)でng-clickを設定する方法

UPDATE: わかりました、私はもう少し具体的にする必要があります。

私の問題は、内部のボタンでリーフレットポップアップについてです。 にGeoJSONデータのロードが非同期と私はポップアップを追加するための「onEachFeature」機能を持っている - 関数は次のようになります。(!ITを簡素化'S)

.controller('MapCtrl', function($scope, $state) { 
    function oef(feature, layer) { 
    var bounds = layer.getBounds(); 
    var center = bounds.getCenter(); 

    var marker = L.marker(center).addTo(MAP); 

    var popup = new L.Popup({ 
     autoPan: false, 
     keepInView: true, 
     closeButton: false, 
     offset: new L.point(0, -5) 
    }).setContent("<div><a ng-click='test()'>"+feature.properties.tooltip + "</a></div>"); 


    } 

    //LOADING AND ADDING DATA TO MAP 
    .... 
    //END 

    $scope.test = function(){ 
    alert("HI"); 
    } 
}); 

任意のアイデアは?

+0

? –

+0

私は上記のコードを変更しました。だから少し分かりやすいはずです – nrhode

+0

@nrhodeはAngularの '$ compile''で動作させていませんでしたか? – lealceldeiro

答えて

2

あなたのhtmlをコンパイルして、角度が "角度コード"と解釈できるようにする必要があります(https://docs.angularjs.org/api/ng/service/ $コンパイルを参照してください)。そうでなければ "角度の世界"の単純な文字列です。下記のサンプルを参照してください。あなたは、コントローラとビューではなく内部のHTMLコードを持っていないのはなぜ

angular.module('myapp', []) 
 
    .controller('foo', function($scope, $compile) { 
 

 
    var div = "<div><a ng-click='hello()'>Hi</a>"; 
 
    var parent = angular.element(document.querySelector('#target')).append(div) 
 
    $compile(parent.contents())($scope); 
 

 
    $scope.hello = function() { 
 
     console.log("'Hi div' clicked: Hi!") 
 
    } 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<style type="text/css"> 
 
    .hand { 
 
    cursor: hand; 
 
    cursor: pointer; 
 
    } 
 
</style> 
 

 
<div ng-app="myapp"> 
 

 
    <div ng-controller="foo"> 
 
    <div id="target" class="hand"></div> 
 
    </div> 
 

 
</div>

関連する問題