1

同じコントローラーで異なるテンプレートを呼び出せるように、単一のコントローラーを使用して複数の同様のコレクションをリストしようとしています。実際、現在、リスト用に 6 つのコントローラーとフォーム用に別の 6 つのコントローラーがありますが、それらはすべて重複しています。

どのように機能するかを示すためだけに、機能しないプランカーを作成しました。私は routeProviders の宣言を避けました。 http://plnkr.co/edit/d06PcrJS5newhrmNy6EJ?p=preview

動的な名前でクラスを宣言する方法をstackoverflowで見ました:

var str = "MyClass";
var obj = new window[str];

しかし、どこに保存されているかを見つけることができなかったので、それを取得することはできません。

これを行う方法についてのヒントはありますか?

4

1 に答える 1

2

Angular のインジェクターを使用して、必要なサービス インスタンスを返すことができます。例えば:

app.controller('NodeListCtrl', function($scope, $location, $injector) {
  var modelName = $location.path().split("/")[1];

  $scope.modelName = modelName.charAt(0).toUpperCase() + modelName.slice(1);

  $scope.nodes = $injector.get($scope.modelName).query();
});

$injector注:コントローラーの関数シグネチャにを追加することを忘れないでください。

jsfiddle : http://jsfiddle.net/bmleite/Mvk2y/

于 2013-02-17T23:30:04.943 に答える