我可以在AngularJS应用程序中使用2个控制器吗
我正在使用Elasticsearch和AngularJS构建一个小型搜索应用程序(仍在学习如何使用两者)。我知道这可能不是最佳实践,但对于所有AngularJS代码来说,尝试将所有js代码保存在一个文件中 我想使用AngularJS UI引导程序Typeahead来实现自动完成功能,但对于如何为应用程序设置两个控制器,或者是否可以在当前控制器中包含Typeahead,我有点困惑? 以下是我的一些代码:我可以在AngularJS应用程序中使用2个控制器吗,angularjs,twitter-bootstrap,Angularjs,Twitter Bootstrap,我正在使用Elasticsearch和AngularJS构建一个小型搜索应用程序(仍在学习如何使用两者)。我知道这可能不是最佳实践,但对于所有AngularJS代码来说,尝试将所有js代码保存在一个文件中 我想使用AngularJS UI引导程序Typeahead来实现自动完成功能,但对于如何为应用程序设置两个控制器,或者是否可以在当前控制器中包含Typeahead,我有点困惑? 以下是我的一些代码: var searchApp = angular.module('searchApp', ['e
var searchApp = angular.module('searchApp', ['elasticsearch', 'ngSanitize', 'ui.bootstrap']);
searchApp.controller('SearchResultsList', ['$scope', 'searchService', 'filterService', '$sce', function($scope, searchService, filterService, $sce) {
我已经将ui引导作为应用程序的依赖项,但由于我已经将SearchResultsList作为我的控制器,因此不确定如何将TypeaheadCtrl包含到应用程序中…是的,您可以在AngularJS中拥有任意多个控制器。但是,您需要小心(例如,在控制器之间传递变量,
$scope.$parent
,如果适用)
同样,如果您使用的是提前输入(或Angular UI引导中的任何指令,如tabset
),则需要小心创建be Angular UI引导的子作用域和基本作用域。始终使用一些保持对象声明范围
变量,这样它就不会在指令中的原始范围中被覆盖($scope.data
存储数据与仅将数据存储在$scope
中)
对于包含typeahead,这是一个简单的指令,当您将其作为依赖项包含在模块中时,您已经包含了它的功能。只需阅读文档并遵循它: