我可以在AngularJS应用程序中拥有2个控制器吗?

时间:2015-09-18 04:35:25

标签: angularjs twitter-bootstrap

我正在使用Elasticsearch和AngularJS构建一个小型搜索应用程序(仍在学习如何使用它们)。我知道这可能不是最佳实践,但对于所有AngularJS代码,尝试将所有js代码保存在1个文件中。

我想使用AngularJS UI Bootstrap Typeahead来实现自动完成功能,但是对于如何为应用程序设置2个控制器或者如果我能以某种方式在我当前的控制器中包含Typeahead有点困惑? 以下是我的一些代码:

var searchApp = angular.module('searchApp', ['elasticsearch', 'ngSanitize', 'ui.bootstrap']);

searchApp.controller('SearchResultsList', ['$scope', 'searchService', 'filterService', '$sce', function($scope, searchService, filterService, $sce) {

我已将ui bootstrap作为应用程序的依赖项,但由于我已将SearchResultsList作为我的控制器,因此不确定如何将TypeaheadCtrl包含在其中......

1 个答案:

答案 0 :(得分:1)

是的,您可以在AngularJS中拥有尽可能多的控制器。但是,您需要小心(例如,在控制器之间传递变量,$scope.$parent,如果适用)

同样,如果你正在使用预先输入(或者来自Angular UI-Bootstrap的任何指令,例如tabset),你需要注意创建的子范围和原始范围是Angular-UI-Bootstrap 。始终使用某个保持对象声明scope变量,这样就不会在指令的原始范围中覆盖它们($scope.data存储您的数据而不是将其存储在$scope中)

对于包含typeahead,这是一个简单的指令,当您将其作为模块中的依赖项包含在内时,您已经包含了它的功能。只需阅读文档并遵循它:

https://angular-ui.github.io/bootstrap/