2013-06-03 9 views
9

が定義されていません。

try { 
     var templateHTML = angular.element('<p>{{total}}</p>'), 
      scope = ....; 

     var clonedElement = $compile(templateHTML)(scope, function(clonedElement, scope) { 
      //attach the clone to DOM document at the right place 
     }); 

     //now we have reference to the cloned DOM via `clone` 
} catch (ex) { 
alert(ex.message); 
} 

が、私は戻って取得すべて"$コンパイルは定義されていません"

HELP!

+1

コントローラの残りの部分はどのように見えるのですか?コントローラー(コントローラー( 'mycontroller'、function($ compile){...}など)をコンパイラーに注入しましたか? –

答えて

6

どこからこのコードを呼び出していますか? angle.element(...)を使用することによってAngularフレームワークの外にあると想定するのは安全ですか?もしそうなら

、あなたはこれを使用することができますされていない場合

// Split across two lines for readability... 
angular.element(<something within Angular's scope>) 
    .injector().get('$compile')(...) 

は、あなたは単に$注入コントローラ/ディレクティブ/サービスにコンパイルする必要があるかもしれません。

8

ディレクティブに$ compileを使用するためのサンプルコード。基本的には&にDOMに要素を追加して(目に見えないようにする)、ファインダを使ってコンパイルを実行します。rtcherryで述べたように、$ compileを注入する必要があります。

 // 
     componentModule.directive('getCompilerWk', function($compile) { 
      return { 
      restrict: 'A', 
      link: function(scope, elm, attr) { 
       elm.click(function(){ 
        $(body).append(templateHTML); 
        $compile($(body).find('p'))(scope); 

       }) 
      } 
      }; 
     }); 
関連する問題