2016-04-05 7 views
0

私は従来のMVCアプリケーションで作業していますが、ビューの中にAngularを実装したいと思います。角型注入とコントローラーでのHTMLのコンパイル

角度を$compileに取得する初期の闘争の後、私は克服できないようなエラーが残っています。

方法、それは動作します(と何かが、私は変更することはできません)は、jQueryの特定のビュー/層のマークアップをロードすることで、DOMで、私はそのとき、次の

// Compiles the DOM into the Angular application 
if ($layer.hasClass('angular-view')) { 
    angular.injector(['ng']).invoke(function ($rootScope, $compile) { 
     $compile($layer)($rootScope); 
     $rootScope.$digest(); 
    }); 
} 

これは私が見ることができますしかし、素晴らしいですがレンダリングされたページ、上の評価値({{2+2}})、私はマークアップにコントローラをコンパイルしようとすると、私は次のエラーを取得する:

Argument 'MyController' is not a function, got undefined

これは私がに注入していたマークアップですアプリケーション:

ここ
<div ng-controller="MyController"> 
    <span>{{2+2}} - {{name}}</span> 
</div> 

は、私はアプリのモジュールを宣言しています方法は次のとおりです。

angular.module('app', []) 
    .controller('MyController', function ($scope) { 
     $scope.name = "Terry Nutkins"; 
    }); 

私はこのような "メイン" DOMでアプリケーションを初期化しています:

<body ng-app> 
    <!-- Content --> 
</body> 

(私もしました試みたng-app = "app")

どのような考えですか?


また、デバッグコンソールでモジュールにクエリを実行すると、コントローラがそこに着席していることがわかります。

答えて

2

私は問題の原因を見つけました。誰かがこの点を知りたがっていれば幸いです。

DOMを注入してコンパイルするときに、使用するWHICHインジェクタを指定する必要があります。私の場合、angular.injectorの配列に「app」を追加する必要がありました。

// Compiles the DOM into the Angular application 
if ($layer.hasClass('angular-view')) { 
    angular.injector(['ng', 'app']).invoke(function ($rootScope, $compile) { 
     $compile($layer)($rootScope); 
     $rootScope.$digest(); 
    }); 
} 
関連する問題