2013-02-17 109 views
1

我想用單個控制器來列出多個相似的集合,所以我可以用同一個控制器調用不同的模板。事實上,現在我有6個控制器列表和另外6個表單,但他們都是重複的。角動態工廠

我已經做了一個非功能性的活塞只是爲了展示我打算如何工作。我已經避免聲明routeProviders,因爲知道它不起作用,我試圖儘可能直接地做到這一點。 http://plnkr.co/edit/d06PcrJS5newhrmNy6EJ?p=preview

我已經看到了計算器如何聲明一個類具有動態名稱:

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

但因爲它是存儲在哪裏我一直沒能找到我無法找回。

有沒有人有關於如何做到這一點的提示?

回答

2

您可以使用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/

+0

這偉大的工作。非常感謝! – subarroca 2013-02-19 08:17:57