2014-12-07 90 views
0

我有這樣的後續的圖:如何使用控制器名稱從JS動態設置控制器的HTML?

<html ng-app="app" ng-controller="mainController">[...] 
<body ng-controller="currentController">[...] 

我想能夠設置從一個可變的上控制器($ scope.currentController)(mainController)主體控制器。控制器mainController看起來像如下:

angular.module("app").controller("mainController", function($scope) { 
    $scope.currentController = "indexController"; // 'indexController' being the name of the controller I want to apply to the view 
}); 

這不明明工作,我怎麼能動態設置控制器從JS的看法?

編輯:(以@mrhobo答案)

我想這一點,給人的事實,我有每個控制器一個文件:

angular.module("app").controller("mainController", function($scope, indexController) { 
    $scope.currentController = indexController; 
}); 

我得到這個錯誤:Doc Angular error

+0

是否可以接受的'mainController'移動到'html'標籤,而不是實現了父子關係? – tasseKATT 2014-12-07 15:13:53

+0

mainController在這裏管理網站使用的控制器。它可以是主頁的'indexController'或應用程序頁面的'appController'。這兩個控制器不管理相同的事情。我試圖把它們放在'mainController'上,它工作正常,但我的控制檯上有錯誤,因爲我引用了每個元素中都不存在的元素。這就是爲什麼我更喜歡'mainController'根據所使用的頁面選擇要應用的。但在所示的代碼中,我只是展示了我想要做的基本概念:使用JS的名字來設置一個來自JS的控制器。 – Elfayer 2014-12-07 15:25:01

+0

我認爲你正在尋找路由的概念。 – 2014-12-07 15:35:39

回答

1

只需指向控制器的構造函數即可。

$scope.currentController = indexController; 

例子:http://jsfiddle.net/2thj6zdk/

+0

看起來像是在工作! =)但是如果我爲每個控制器有不同的文件,我怎麼能在'Main'控制器中獲得'Ctrl1'的構造函數?我得到:https://docs.angularjs.org/error/$injector/unpr?p0=indexCtrlProvider%20%3C-%20indexCtrl – Elfayer 2014-12-07 15:58:52

+0

只要確保構造函數的範圍是全局的就像在這個例子中。 – 2014-12-07 17:57:21

+0

我該如何做到這一點?每個控制器有一個文件。 (我編輯了我的quastion) – Elfayer 2014-12-07 18:35:41

相關問題