Global”;应用程序“;AngularJS中的控制器
Global "App" controllers in AngularJS
我在一些教程和代码示例中注意到,互联网开发人员在其应用程序和模块中使用全局AppController。
在AngularJS中创建全局AppController是最佳实践吗
我确实看到了一些好处,比如能够在"全局"范围内处理事件,例如:
app.controller('AppController', function($scope, $rootScope, $route, $location){
$rootScope.$on('$routeChangeStart', function(event, current, previous) {
console.log('Do something...');
});
$rootScope.$on('$routeChangeSuccess', function(event, current, previous) {
console.log('Do something...);
});
});
这种模式还有其他优点或缺点吗?
纯粹在情境中。让我们举一个动态更改标题标签和页面视图的例子:
.config(['$routeProvider','$locationProvider',function($routeProvider,$locationProvider){
$routeProvider.when('/', {
template: '/views/home.html',
title:'Home'
});
$locationProvider.html5Mode(true);
}]);
.controller('app', ['$scope','$route','$location',function($scope,$route,$location){
$scope.$on("$routeChangeSuccess",function($currentRoute,$previousRoute ){
$scope.title = $route.current.title;
$scope.page = $route.current.template;
});
}]);
现在,我们的标题和页面视图都是通过封装应用程序的应用程序级控制器动态加载的。这可能非常有用。
<html lang="en" ng-controller="app">
<head>
<title>{{title}}</title>
</head>
<body>
<ng-include src="page"></ng-include>
</body>
</html>
下面是一个不使用它的例子。假设我们的一个部分页面从API返回数据:
<!-- search.html -->
<div ng-repeat="item in items">
{{item.title}}
</div>
在我们的应用程序级控制器中,我们通过广播提取数据:
$scope.$on('searchComplete',function(d){
$scope.items = d
});
然而,该分部将按我们的意图显示数据——当其他子分部使用范围被覆盖的items
时,可能会出现问题。
<!-- other-search.html -->
<div ng-controller="OtherSearch" ng-click="search()">
<div ng-repeat="item in items">
{{item.title}}
</div>
</div>
在这部分中,ng-click
正在引导用户的请求。因此,如果应用级控制器已经在父级中绑定了items
,则用户在切换到此部分时将看到项目列表,即使他们从未触发search()
的操作。
相关文章:
- 将值从html传递到AngularJS控制器
- angularjs-控制器在表单提交时未调用
- Angularjs控制器本地错误
- AngularJS:控制器中的函数被模板多次调用
- 将AngularJS控制器拆分为多个文件
- AngularJS控制器范围
- AngularJS控制器不工作,为什么?(简单的控制器示例)
- AngularJS控制器在注入工厂时抛出错误
- 如何使用onclick事件调用AngularJS控制器
- angularjs控制器未启动
- 设置AngularJS控制器属性不能是使用Coffeescript的最后一行
- 如何使AngularJS控制器依赖于通过ajax加载在rootScope上的值
- 通过因果报应测试管理angularjs控制器初始化
- AngularJs 控制器中的实时时钟功能
- Angularjs:控制器的代码组织
- 简单的AngularJS控制器不起作用
- 如何从 angularjs 控制器访问$resource
- 在 html5 视频结束时调用 AngularJS 控制器函数
- AngularJS控制器内部的功能
- AngularJS控制器中基于值的重定向