2

私は angularjs に比較的慣れていません。やりたいことは、ngView のようなコンポーネントを作成することです。
そのため、コントローラーを DOM に挿入するという非常に重要なプロセスがあります。
DOMがあるとします。

<div>
    <span>Name: {{name}}</span>
</div>

そしてコントローラー、

function InjectedController($scope) {  
   $scope.name = "Leo Yuan";  
} 

私がやりたいのは、コントローラー「InjectedController」を分割に挿入
することです。ngView のようにコードを記述しようとしました
$("div").contents().data('$ngControllerController', InjectedController);
それでもうまくいきませんでした、何か問題がありましたか?

4

1 に答える 1

-1

これを行うには、コントローラーを HTML に直接含めます。この HTML をテンプレートまたは変数として保存してから、文字列としてロードしてください。

<div data-ng-controller="%%controller%%">
  <span>Name: {{name}}</span>
</div>

%%controller%% の部分を、JavaScript を使用して任意のコントローラーに置き換えます。

次に、それを直接実行するか、その HTML を単独でコンパイルします。

var templateHTML = "..."; //either download it with XHR or make it an inline template
templateHTML = templateHTML.replace('%%controller%%', injectedController);

//inject the $compile service into the function body
//grab the scope if it's not already there
$scope = $scope || angular.element(document).scope();

//this should run the controller automatically
$compile(templateHTML)($scope);
于 2012-11-14T16:15:01.567 に答える