【问题标题】:Angular dynamic factory角动态工厂
【发布时间】:2013-02-17 22:41:25
【问题描述】:

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

我制作了一个非功能性的 plunker,只是为了展示我打算如何工作。我避免声明 routeProviders 因为知道它不起作用,我试图尽可能直截了当。 http://plnkr.co/edit/d06PcrJS5newhrmNy6EJ?p=preview

我在 stackoverflow 上看到了如何声明一个具有动态名称的类:

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

但由于我无法找到它的存储位置,我无法检索它。

有没有人提示如何做到这一点?

【问题讨论】:

    标签: dynamic angularjs factory


    【解决方案1】:

    您可以使用 Angular 的 injector 来返回您想要的服务实例。例如:

    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 添加到控制器的函数签名中。

    jsfiddlehttp://jsfiddle.net/bmleite/Mvk2y/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多