1

我正在尝试使用单个控制器来列出多个类似的集合,以便可以使用同一个控制器调用不同的模板。事实上,现在我有 6 个用于列表的控制器和另外 6 个用于表单的控制器,但它们都是重复的。

我做了一个非功能性的 plunker 只是为了展示我打算如何工作。我避免声明 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 回答