2017-09-08 18 views
1

jqueryのhtml()を使用して別の要素にHTMLを追加しようとすると、私はng-clickの能力を失う。ここで私のコードの大まかな説明です。たとえば、私は、HTMLのレンダリングになるとtestController.html()が角度範囲を失う

angular.module("test") 
.controller("testController", ["$scope", "$rootScope", 
    function ($scope, $rootScope) { 

     var systemMessage = "<div><span><\/span><\/div>"; 

     $scope.appendHtml = function() { 
      systemMessage.find("span").html('<button ng-click="highlightQuestion(id)">go to</button>'); 
     } 

     $scope.highlightQuestion = function (id) { 
      console.log(id); 
     } 

    }]); 

と呼ばれるコントローラを持って、私はボタンをクリックしようとすると、何も起こりません。私が期待していたのは、自分のコードでによって制御されているdivにsystemMessageが追加されたので、highlightQuestion関数にアクセスできるということでした。誰でもこの仕事をする方法について考えている?ありがとう!

答えて

2

$compileサービスを利用する必要があります。 controllerに注入し、

$scope.appendHtml = function() { 
    var span = systemMessage.find("span"); 
    span.html('<button ng-click="highlightQuestion(id)">go to</button>'); 
    $compile(span)(scope); 
} 
+0

をご利用いただきありがとうございます。これで '$ compile'をどのように使うのかスニペットを表示できますか? – Growlithe

+0

@Growlithe編集された回答を参照 –

+0

ボタンは追加されませんでしたが、コンテナがレンダリングされました。 'contents()'コールを使わずに試してみる – Growlithe

関連する問題