Angularjs在启动时初始化多个控制器?

时间:2014-05-28 22:39:29

标签: javascript angularjs angularjs-directive angularjs-routing angularjs-controller

我有一个带有menuController的普通导航栏,这是父。

然后我有另外两个控制器DashBoardController这是在启动时加载的,如果我单击导航栏中的链接,则会调用LoadDataController。

它使用routeprovider进行路由,如下所示:

$routeProvider.when('/', {templateUrl: 'partials/dashboard.html', controller: 'DashBoardController'})
$routeProvider.when('/loadData', {templateUrl: 'partials/loadData.html', controller: 'LoadDataController'})

在我的LoadDataController中,我有一个函数,例如doSomething(); ..如果我单击导航栏中的链接,它会将我路由到loadData站点..它应该调用doSomething()函数。我不想使用ng-init我想用广播事件做这个!现在的问题是,如果我单击导航栏中的链接,它会将我委托给loadData.html站点并发送广播事件,但此时我的LoadDataController中的$ on方法未初始化,因此永远不会调用该方法。我怎么解决这个问题 ?我可以在启动时初始化我的DashBoard和LoadDataController吗?如果我进入我的索引站点,那么DashBoard和我的LoadDataController都会被初始化?

修改 @Dayan不,我不希望每次初始化时都调用特殊功能!我的menucontroller在启动时初始化并且是父控制器。在这个控制器下面是另外两个控制器我的DashBoard和我的LoadDataController。在我的Navbar中,我有不同的链接,应该在我的LoadDataController中调用不同的函数。问题是现在,广播事件没有到达LoadDataController,因为此时$ on方法没有被初始化..例如..我在我的导航栏中有一个链接,在我的navbarcontroller中调用一个函数,如下所示:

$rootScope.$broadcast('callFunctionInLoadDataControllerEvent', null);
$location.path('/loadData');

在我的LoadDataController中,我有$ on方法,它会调用这样一个特殊函数:

$scope.$on('callFunctionInLoadDataControllerEvent', function(scope, data) {

$scope.specialFunction();

}

问题是现在,我发送广播,此时LoadDataCOntroller没有初始化(因此mehtod上的$也没有初始化,事件永远不会到达我的控制器),如果我改变了,则启动首先启动$ location.path的路径(' / loadData');

0 个答案:

没有答案