バックエンドから受信したデータに基づいて、「コンポーネント」を動的に作成したいと考えています。目標は、サーバー側のテンプレートを使用せずに、アプリケーションの一部を表示することです。コンポーネントをサーバー側で表示する代わりに、サーバーは表示するコンポーネントを含む JSON データを送信します。
ここに私がこれまでに持っているものがあります:
var module = angular.module('testApp', []);
module.controller('Ctrl1', ['$scope', function ($scope) {
$scope.test = "test 1";
}])
.controller('Ctrl2', ['$scope', function ($scope) {
$scope.test = "test 2";
}])
.controller('ComponentsController', ['$scope', function ($scope) {
// this is JSON returned by backend
$scope.components = [{
name: "Wd1",
controller: "Ctrl1",
}, {
name: "Wd2",
controller: "Ctrl2",
}];
$scope.test = "test";
}]);
そして私の見解:
<div ng-app="testApp">
<div ng-controller="ComponentsController">
<div ng-repeat="component in components">
<p>{{component.name}} - {{component.controller}}</p>
</div>
<div ng-repeat="component in components">
<p ng-controller="component.controller">{{test}}</p>
</div>
</div>
</div>
ただし、次のエラーが表示されます。
エラー: 引数 'component.controller' は関数ではありません。文字列を取得しました
コンパイル時にコントローラ名を代入してディレクティブを書こうとしたのですが、コンパイル時に行われるため、バインディングでは動作しません...
ここにフィドルがあります:http://jsfiddle.net/mathieu/bTQA5/